【发布时间】:2015-04-29 23:21:50
【问题描述】:
如果perlcritic 说“在 sub 中没有返回是错误的”,如果真的不需要它们,还有什么替代方法?
我已经养成了两个明显的坏习惯:
- 我明确地将变量分配给 '$main::' 命名空间。
- 然后我在 subs 中使用这些变量。
例如,我可能会这样做..
#!/usr/bin/perl
use strict;
use warnings;
@main::array = (1,4,2,6,1,8,5,5,2);
&sort_array;
&push_array;
&pop_array;
sub sort_array{
@main::array = sort @main::array;
for (@main::array){
print "$_\n";
}
}
sub push_array{
for ( 1 .. 9 ){
push @main::array, $_;
}
}
sub pop_array {
for ( 1 .. 3 ){
pop @main::array;
}
}
我并不总是这样做。但在上面,这是有道理的,因为我可以分离操作,不必担心来回传递值,而且对我来说通常看起来很整洁。
但正如我所说,perl 评论家说它错了 - 因为没有回报..
那么,有没有人能够解释我正在尝试做的事情并提出一种更好的方法来处理这种在 perl 中的编码风格?例如。我是在做 OOP 吗?
【问题讨论】:
-
其实不需要返回值——见perldoc.perl.org/functions/return.html
-
这不是 需要 但 perlcritic 标记它的原因是,使用隐式返回是不好的风格。例如。你用
$result = $a + $b;结束你的脚本——然后有人想调试它,弄清楚$result是什么——他们在它后面添加一个print。这会更改脚本的返回码。最好明确一点。
标签: perl function oop subroutine perl-critic