设为首页 收藏本站
查看: 806|回复: 0

[经验分享] Perl 最佳实践(节选)

[复制链接]

尚未签到

发表于 2015-12-29 04:39:18 | 显示全部楼层 |阅读模式
  
第二章:代码部署
  
  
零零壹.

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

  
  即:
  my @name = (
  ‘Damian’,
  ‘Matthew’
  );
  
  for my $name (@names) {
  formy $word ( anagrams_of(lc $name) ) {
  print“$wor\n”;
  }
  }
  
  
零零贰.

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

  
  例如:
  
  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,0, 10),           # 为强加优先级所以需要小括号
  “:$votes (verified)\n”;
  }
  
  
零零伍.

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

  例如:
  
  $candidates[$i]= $incumbent{ $candidates[$i]{ get_region() } };
  
  
零零陆.

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

  
  例如:
  my $displacement
  =$initial_velocity * $time &#43; 0.5 * $acceleration * $time**2;
  
  
零零柒.

每条语句之后都放分号。

  
  例如:
  while (my $line = <>) {
  chomp$line;
  if( $line =~ s{\A (\s*) – (.*)}{$1#$2}xms ) {
  push@comments, $2;
  }
  
  Print$line;
  }
  
  
零零捌.

多行列表中的每个&#20540;后面都放逗号。

  
  例如:
  my @dwarves = (
  ‘Happy’,
  ‘Sleepy’,
  ‘Sneezy’
  );
  
零零玖.

使用78列的代码行。

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

使用4列缩排层次。

  
  
零壹壹.

以空&#26684;缩排,不要以制表符(tab)缩排。

  
  
零壹贰.

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

  
  
零壹叁.

代码要分段落。

  
  
零壹肆.

不要紧贴着else。

  
  “紧贴的”else看起来像这样:
  } else {
  正确的:
  }
  else{
  
  
零壹伍.

垂直对齐相对应的项目。

  
  例如:
  $name     =standardize_name($name);
  $age        =time - $birth_date;
  $status    =‘active’;
  
  
零壹陆.

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

  
  例如:
  push @steps, $steps[-1]
  &#43;$radial_velocity * $elapsed_time
  &#43;$orbital_velocity * ($phase &#43; $phase_shift)
  -$DRAG_COEFF * $altitude
  ;
  
  
零壹柒.

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

  
  例如:
  my $next_step = $steps[-1]
  &#43;$radial_velocity * $elapsed_time
  &#43;$orbital_velocity * ($phase &#43; $phase_shift)
  -$DRAG_COEEF * $altitue
  ;
  add_step ( \@steps, $next_step,$elapsed_time );
  
  
零壹捌.

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

  
  例如:
  push @steps, $steps[-1]
  &#43;$radial_velocity * $elapsed_time
  &#43;$orbital_velocity
  *($phase &#43; $phase_shift)
  -$DRAG_COEFF * $altitude
  ;
  
  
零壹玖.

在赋&#20540;运算符前断开冗长的赋&#20540;运算。

  
  例如:
  $predicted_val{$current_data_set}[$next_iteration]
  =$average &#43; $predicted_change * $fudge_factor;
  
  
零贰零.

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

  
  例如:
  my $name = defined $customer{name} ?$customer{name}
  :                                         ‘Sir or Madam’
  ;
  
  
零贰壹.

冗长列表要加小括号。

  
  例如:
  print (
  ‘Processing’,
  Scalar(@items),
  ‘items at ’,
  time,
  “\n”
  );
  
  
零贰贰.

机械式地执行你所选择的部署风&#26684;。

  
  Perl有可用的&#26684;式化工具:perltidy。
  网址:http://perltidy.sourceforge.net
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157671-1-1.html 上篇帖子: Perl 学习笔记 下篇帖子: perl 脚本实现简单搜索修改文件并生成diff文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表