DVK*_*DVK 10 perl coding-style idiomatic-perl
几年前,我参与了为我们(相当大的,经常使用Perl)公司编写最佳实践/编码风格.它由"高级"Perl开发人员委员会完成.
正如通过共识所做的任何事情一样,它有各自不同意的部分.咄.
最错误的部分强烈建议不要使用许多Perlisms(松散定义为C++或Java中没有的代码习语),例如"避免使用"......除非X;' 结构体".
这个规则的主要原理是,非Perl开发人员在使用Perl代码库时会花费更多的时间.我猜这里的假设是,Perl代码骑手总体上比普通人更为罕见 - 并且是新员工.
我想知道SO是否有任何好的论据来支持或拒绝这种逻辑......在这一点上,这主要是学术上的好奇心,因为该公司的Perl编码标准是僵化的,并且就我所知,永远不会再被修改.
PS为了清楚起见,问题是在我注意到的背景下 - 全Perl小型开发商店的答案显然是一个响亮的"使用Perl达到其最大能力".
bri*_*foy 30
我编写代码假设一个称职的Perl程序员会读它.我不会勉强聪明,但我也不会愚蠢.
如果您正在为不懂语言的人编写代码,那么您将错过使用该语言的大部分内容.我经常发现人们想要取缔Perlisms,因为他们拒绝学习比他们已经知道的更多.
既然你说你在一个小型的Perl商店,那么如果你不理解,那么编写代码的人应该很容易.这类东西应该出现在代码审查等等.每个人都会继续了解有关该语言的更多信息,因为您有定期和定期查看代码的机会.如果没有其他眼球看着别人的代码,你不应该花太多时间.你当然不应该等到他们离开公司一周后.
至于新员工,我总是感到困惑,为什么有人会认为你应该把它们放在键盘前面并将它们放松,以期在他们从未见过的代码库中进行富有成效的工作.
这也不仅限于Perl.这是一般编程问题.您应该始终了解有关工具的更多信息.我所知道的大多数大商店都有迷你版本,可以让开发人员加快代码库的速度,包括他们可能遇到的任何棘手的代码.
我问自己两个简单的问题:
那是一个坏主意.但,
那么这是个好主意.
我认为没有合理的理由拒绝字符串插值,因为Java和C没有它.unless是一个有趣的,但我认为有一个子程序从偶尔开始
return undef unless <something>;
Run Code Online (Sandbox Code Playgroud)
并不是那么糟糕.
你的意思是什么样的perlisms?
好:
for(1..5) {}或for( @foo ) {}my $count = @items;map,grep和sort:my %foo = map { $_->id => $_ } @objects;好的,如果有限:
die "Bad juju\n" unless $foo eq 'good juju';my $foo = shift; $foo = 'blarg' unless defined $foo;.这种用法是,IMO,比a更清洁my $foo = defined $_[0] ? shift : 'blarg';.map.原型是编译器提示,而不是任何其他语言意义上的"原型".and和orvs. &&和||.您的所有代码都应该是一致的.最好使用Perl :: Critic策略来强制执行.避免:
local与local其他任何地方都不一样.