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

[经验分享] Perl最佳实践第三章(命名规则)

[复制链接]

尚未签到

发表于 2015-12-28 11:50:15 | 显示全部楼层 |阅读模式
标示符
  变量名采用 形容词_名词 的格式命名,多个单词之间用下划线分隔,比如



$next_record
$total_score
$root_node
  对于查表的数组或者哈希,采用 xxx_of, xxx_for的命名方式,也就是在末端加上介词,比如。



my %title_of;
my %ISBN_for;
my @sales_from;
  这种写法会使后面的代码可读性极好。



while (my $month = prompt -menu => $MONTH_NAMES) {
    for my $book (@catalog) {
        print "$ISBN_for{$book} $title_of{$book}: $sales_from[$month]\n";
    }
}
  对于子程序和方法而言,构成名称的文法规则如下



sub get_record
sub get_record_for
sub eat_cookie
sub eat_previous_cookie
sub build_profile
sub build_execution_profile
sub build_execution_profile_using
  如此一来,后面的代码几乎不用加注释。



@config_options = get_record_for($next_client);
for my $option (@config_options) {
    build_execution_profile_using($next_client, $option);
}
布尔值
  一般以所测试的属性或断言作为命名依据,这也会使条件表达式读起来很自然,通常来讲,这些名称大多以is_或has_开头,当然也有例外,比如。



sub is_valid;
sub metadata_available_for;
sub has_end_tag;
my $loading_finished;
my $has_found_bad_record;
  看看使用这种规则的代码可读性吧,如下,几乎是自注释的。



if (is_valid($next_record) && !$loading_finished) {
    METADATA:
    while (metadata_available_for($next_record)) {
        pushu @metadata, get_metadata_for($next_record);
        last METADATA if has_end_tag($next_record);
    }
}
else {
    $has_found_bad_record = 1;
}
引用变量
  在引用变量的后面加上_ref,可以防止把引用变量当作普通变量使用。

数组和哈希
  哈希通常以单数命名,后跟介词,前面已经讲过,而数组处则通常以复数命名。

下划线
  名称的单词之间以下划线来分隔。

大小写
  子程序,方法,变量,加标签的自变量都使用小写。
  包和类名(IO::Controller)使用混合的大小写。
  常量则使用大写($SRC, $ARG)。

实用子程序
  在编写类或模块时,仅供内部使用而不导出的子程序,应该以下划线开头
  ==

运维网声明 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-157449-1-1.html 上篇帖子: 《Apache服务之php/perl/cgi语言的支持》RHEL6——服务的优先级 下篇帖子: 7本免费ruby-9本免费python-4本免费perl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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