zoukankan      html  css  js  c++  java
  • 《代码大全》中的变量

    一、选择好变量名的注意事项

    1)命名注意事项

    为变量命名时最重要的考虑事项是:该名字要完全、准确地描述出该变量所代码的事物。这种名字要很容易阅读,因为其中不包含晦涩的缩写,同时也没有歧义。下表给出了更多变量名称的例子,其中有好的也有差的。

    2)以问题为导向

    一个好记的名字反映的通常都是问题,而不是解决方案,表达是是what(什么)而不是how(如何),例如员工数据记录可以是inputRec或employeeData。在财务软件里,calcVal的计算痕迹要比sum更明显。

    3)最适当的名字长度

    当变量名的平均长度在10到16个字符的时候,调试程序所花费的力气是最小的。

    4)变量名对作用域的影响

    短的变量名会带来一些麻烦。对于全局命名空间中的名字加以限定词,例如用namespace关键字划分全局命名空间。

    5)变量名中的计算值限定词

    计算结果的变量:总额、平均值、最大值等。如果要用类似于Total、Sum、Average、Max、Min、Record、String、Pointer这样的限定词来修改某个名字,那么请把限定词加到名字的最后,可提高可读性,简化维护工作。

    6)变量名中的常用对仗词

    通过应用命名规则来提高对仗词使用的一致性,从而提高其可读性。下面是一些常用的对仗词:

    二、为特定类型的数据命名

    1)为循环下标命名

    i、j和k是约定俗成的。如果一个变量要在循环之外使用,那么就需要一个更有意义的名字,类似于recordCount、teamIndex等。

    2)为状态变量命名

    为状态变量取一个比flag更好的名字,例如characterType = CONTROL_CHARACTER。

    3)为临时变量命名

    临时变量常被赋予temp、x或者其他一些模糊且缺乏描述性的名字。临时变量是一个信号,表明程序员还没有完全把问题弄清楚,程序员会倾向于比其他变量更为随意地对待这些变量,从而增加了出错的可能。

    4)为布尔变量命名

    谨记典型的布尔变量名:done、error、found、success或ok。给布尔变量赋予隐含“真/假”含义的名字。变量名加前缀“is”的优点是不能用于那些模糊不清的名字:isStatus,缺点是降低了简单逻辑表达式的可读性,isFound的可读性要略差于found。

    5)为枚举类型命名

    通过使用组前缀,如Color_、Planet_或者Month_来明确表示该类型的成员都同属于一个组。

    6)为常量命名

    根据常量所表示的含义,而不是该常量所具有的数组为该抽象事物命名。

    三、标准前缀

    1)用户自定义类型缩写

    UDT缩写可以标识被命名对象或变量的数据类型,表示像窗体、屏幕区域以及字体一类的实体,通常不会表示任何由编程语言所提供的预制数据类型。

    2)语义前缀

    语义前缀比UDT更进一步,描述了变量或者对象是如何使用的。根据项目的不同而不同。

    3)标准前缀的优点

    标准前缀能够更精确地描述一些含义比较模糊的名字,例如min和max、first和last,并且使名字更加紧凑,例如可以用cpa而不是totalParagraphs表示段落总数,可以用ipa表示一个段落数组的下标,而不是用indexParagraphs或者paragraphsIndex。

    四、创建具备可读性的短名字

    1)缩写的一般指导原则

    其中的一些原则彼此冲突,所以不要试图同时应用所有的原则。

    2)有关缩写的评论

    1. 不要用从每个单子中删除一个字符的方式来缩写。

    2. 缩写要一致,要么全用Num,要么全用No。

    3. 创建你能读出来的名字,用xPos而不用xPstn,用needsCompu而不用ndsCmptg。

    4. 避免使用容易看错或读错的字符组合,为了表示b的结尾,endb要比bend更好。

    5. 使用辞典来解决命名冲突,创建简短名字会带来一项麻烦就是命名冲突,用dismissed代替fired,3个字母的缩写变为dsm。

    6. 在代码里用缩写对照表解释极短的名字的含义。

    7. 在一份项目级的“标准缩写”文档中说明所有的缩写。

    8. 名字对于代码读者的意义要比对作者更重要。

    五、应该避免的名字

    1. 避免使用令人误解的名字或缩写。

    2. 避免使用具有相似含义的名字,例如input和inputValue在语义上非常相似。

    3. 避免使用具有不同含义但却有相似名字的变量,例如clientRecs和clientReps这样的名字。

    4. 避免使用发音相近的名字,例如wrap和rap。

    5. 避免在名字中使用数字,例如file1和file2,如果数字很重要,那么用数组来代替一组单个的变量。

    6. 避免在名字中拼错单词,例如把highlight错拼为hilite。

    7. 避免使用英语中常常拼错的单词,例如absense、acummulate、calender等这些拼错的单词。

    8. 不要紧靠大小写来区分变量名。

    9. 避免使用多种自然语言,如果一个项目在多个说英语的国家进行,就应该以其中一种英语版本为标准。

    10. 不要使用与变量含义完全无关的名字。

    11. 避免在名字中包含易混淆的字符,例如数字1和字母l。

  • 相关阅读:
    reset内容
    如何在鼠标悬停时图片旁边出现详情说明模块
    从零学习Entity Framework
    一款程序员用的小说下载器
    实习笔记(数据库相关)-2014
    ASP.NET json数据的序列化与反序列化
    不使用服务器控件的ASP.NET
    win7 下先装SQL2005 后装SQL2000 解决方案
    Jquery 插件封装成seajs的模块
    前端模块化实践——seajs的使用
  • 原文地址:https://www.cnblogs.com/strick/p/9349525.html
Copyright © 2011-2022 走看看