![]() |
1
25
一句话: 不! 让我们看看:
首先,你没有使用
第二,你没有使用
第三,在重新发明轮子之前,你应该养成偶尔阅读常见问题列表的习惯:参见 How do I capitalize all the words on one line? 如果您认为这很严厉,请考虑以下事实:
您的代码输出 Fred And Barney'S Lodge 哪个是那个问题中给出的例子。 此外,拥有一个能做不止一件事情的功能,根据神秘数字选择它所做的事情,并且这些事情都不对,这不是一个好的设计策略。 相反,您应该有多个函数,它们的命名方式可以让代码的临时读者理解,每个函数只做一件事情,并且做得正确。 最后,您的函数的扩展版本(不用说编写这样一个函数的智慧)可以更好地编写为:
|
![]() |
2
11
不要使用
但是,如果您正在测试UNdef,那么未定义的东西实际上是一个数字或字符串是没有意义的,因此它们有一个用于此类测试的运算符:
你可以简单地通过做来测试某个东西是否被定义
|
![]() |
3
5
通常,在子例程中进行任何其他处理之前,您总是希望解压缩@。这使用户、其他维护人员和您自己在未来更加清楚地了解如何使用Sub。
最好的办法是在做其他事情之前,立即将变量放入有意义的scalar中。
对于一个参数子例程,一个常见的解决方案是使用
对于任何一个参数子例程。 但是,如果你有更多呢?列出上下文分配,来救援!可以使用列表分配一次分配多个变量。你可以做到
和
|
![]() |
4
5
这可能只是我的观点,您的编码风格完全取决于您,但就个人而言,我发现在将参数直接分配给变量,而不是将子例程的“业务”部分包装在if块中时有很多价值,在此之前,我会发出函数croak。例如:
|
![]() |
5
5
Perl的switch语句:给定/时间
从5.10及更高版本开始,Perl内置了一个很棒的switch语句,名为[
这将启用所有Perl5.10特性,包括交换机(和
传递给给定的变量将自动放入
|
![]() |
6
4
也许你会发现 Params::Validate 有用的它可以用于通过各种规则验证参数。以下是您的情况:
|
![]() |
7
4
做:
然后
croak的工作原理与die类似,但通常会向错误消息添加比
|
![]() |
8
3
数组索引
数组访问和Perl中的其他东西一样,是上下文敏感的。把这个附加在名字上的符号想象成一个“提醒”,提醒你现在想要访问或使用什么。每当你看到
您需要一个包含单个元素的列表。这个特性允许您一次从一个数组中获取多个值,但是当只访问一个值时,它会在某些上下文中引起问题,例如赋值。因此,在访问单个数组元素时,您希望始终使用标量上下文:
|
![]() |
9
2
其他答案中已经暗示但没有直接提到的是数字模式的使用,这是Perl从C.Quick继承过来的一种惯例,不看代码,模式3做什么?见鬼,看看代码模式3有什么作用? Perl具有高效且易于使用的字符串。使用它们。给你的模式命名与它的作用有关。有点像…先,后,先,后。它们不必完全是描述性的,小写字母,那么最后一个字母就太长了,无法打字,但给了人类足够的东西,让大脑可以依附和联想。 但实际上这是四个子例程。模式标志是红色标志,特别是当大多数代码都出现在if/else语句中时。 |
![]() |
10
2
我非常不喜欢过于智能的功能。过于智能的函数是其行为完全由其参数改变的函数。看看你的,除了参数处理,它们几乎不共享任何代码。不管怎样,如果我做一些类似的事情,我会写如下:
|