加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl 最佳实践(节选) --- 02

发布时间:2020-12-16 00:26:20 所属栏目:大数据 来源:网络整理
导读:? 第二章:代码部署 ? ? 零零壹. 以 KR 风格表示大括号和小括号。 ? 即: my @name = ( ?????? ‘Damian’, ?????? ‘Matthew’ ); ? for my $name (@names) { ?????? formy $word ( anagrams_of(lc $name) ) { ????????????? print“$worn”; ?????? } } ?

?

第二章:代码部署

?

?

零零壹.

K&R风格表示大括号和小括号。

?

即:

my @name = (

?????? ‘Damian’,

?????? ‘Matthew’

);

?

for my $name (@names) {

?????? formy $word ( anagrams_of(lc $name) ) {

????????????? print“$worn”;

?????? }

}

?

?

零零贰.

控制关键字和后继开口括号间要以空白分割

?

例如:

?

?????? formy $result (@results) {

????????????? print_sep();

????????????? print$result;

?????? }

?

?????? while($min < $max) {

????????????? my$try = ($max - $min) / 2;

????????????? if($value[$try] < $target) {

???????????????????? $max= $try;

????????????? }

????????????? Else {

???????????????????? $min= $try;

????????????? }

?????? }

?

?

?

零零叁.

不要把子程序或变量名称与后继开口括号分割开来。

?

即:

?????? my@candiates = get_candidates($marker);

?

?????? CANDIDATE:

?????? formy $i (0..$#candidates) {

????????????? nextCANDIATE if open_region($i);

?

????????????? $candidates[$i]

???????????????????? =$incumbent{ $candidates[$i]{region} };

?????? }

?

?

零零肆.

不要对内置函数和“名誉”内置函数使用不必要的小括号。

即:

?

?????? while(my $record = <$results_file>) {

????????????? chomp$record;

????????????? my($name,$votes) = split “t”,$record;

????????????? print‘Votes for ’,

???????????????????? substr($name,10),?????????? # 为强加优先级所以需要小括号

???????????????????? “:$votes (verified)n”;

?????? }

?

?

零零伍.

把复杂的键或索引与周围的括号分开来。

例如:

?

?????? $candidates[$i]= $incumbent{ $candidates[$i]{ get_region() } };

?

?

零零陆.

利用空白让二元运算符相对于其操作数更醒目。

?

例如:

my $displacement

?????? =$initial_velocity * $time + 0.5 * $acceleration * $time**2;

?

?

零零柒.

每条语句之后都放分号。

?

例如:

while (my $line = <>) {

?????? chomp$line;

?????? if( $line =~ s{A (s*) – (.*)}{$1#$2}xms ) {

????????????? push@comments,$2;

?????? }

?

?????? Print$line;

}

?

?

零零捌.

多行列表中的每个值后面都放逗号。

?

例如:

my @dwarves = (

?????? ‘Happy’,

?????? ‘Sleepy’,

?????? ‘Sneezy’

);

?

零零玖.

使用78列的代码行。

?

因为印刷文件、旧式VGA显示设备、展示软件和应用光学没有解除这些限制,以大于80列的宽度作为代码的格式安排并不合理。

?

?

零壹零.

使用4列缩排层次。

?

?

零壹壹.

以空格缩排,不要以制表符(tab)缩排。

?

?

零壹贰.

绝不要把两条语句放在同一行。

?

?

零壹叁.

代码要分段落。

?

?

零壹肆.

不要紧贴着else

?

“紧贴的”else看起来像这样:

?????? } else {

正确的:

?????? }

?????? else{

?

?

零壹伍.

垂直对齐相对应的项目。

?

例如:

$name???? =standardize_name($name);

$age??????? =time - $birth_date;

$status??? =‘active’;

?

?

零壹陆.

在运算符之前断开冗长表达式。

?

例如:

push @steps,$steps[-1]

???????????????????? +$radial_velocity * $elapsed_time

???????????????????? +$orbital_velocity * ($phase + $phase_shift)

???????????????????? -$DRAG_COEFF * $altitude

???????????????????? ;

?

?

零壹柒.

把语句中间的冗长表达式分离出来。

?

例如:

my $next_step = $steps[-1]

??????????????????????????? +$radial_velocity * $elapsed_time

??????????????????????????? +$orbital_velocity * ($phase + $phase_shift)

??????????????????????????? -$DRAG_COEEF * $altitue

??????????????????????????? ;

add_step ( @steps,$next_step,$elapsed_time );

?

?

零壹捌.

一定要在最低可能优先级的运算符之处断开冗长表达式。

?

例如:

push @steps,$steps[-1]

???????????????????? +$radial_velocity * $elapsed_time

???????????????????? +$orbital_velocity

??????????????????????????? *($phase + $phase_shift)

???????????????????? -$DRAG_COEFF * $altitude

???????????????????? ;

?

?

零壹玖.

在赋值运算符前断开冗长的赋值运算。

?

例如:

$predicted_val{$current_data_set}[$next_iteration]

?????? =$average + $predicted_change * $fudge_factor;

?

?

零贰零.

以列安排级联三元运算符。

?

例如:

my $name = defined $customer{name} ?$customer{name}

????????????? ?:?????????????????????????????????????? ? ‘Sir or Madam’

????????????? ?;

?

?

零贰壹.

冗长列表要加小括号。

?

例如:

print (

?????? ‘Processing’,

?????? Scalar(@items),

?????? ‘items at ’,

?????? time,

?????? “n”

);

?

?

零贰贰.

机械式地执行你所选择的部署风格。

?

Perl有可用的格式化工具:perltidy。

网址:http://perltidy.sourceforge.net

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读