《代码大全》中的变量
一、选择好变量名的注意事项
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。
相关文章
- 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
- 1秒启动Web Server
- 中心化交易所如何用Merkle Tree实现资产储备证明
- 揭秘GaussDB(for Redis):全面对比Codis
- 梦幻联动!金蝶&华为云面向大企业发布数据库联合解决方案
- 面对锁等待难题,数仓如何实现问题的秒级定位和分析
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 看我如何连夜自建网站背刺我的求职对手们
- GaussDB拿下的安全认证CC EAL4+究竟有多难?
- 华为云开发者官网首页焕新升级,赋能开发者云上成长
- 从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值
- 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
- 华为云区块链三大核心技术国际标准立项通过
- 云小课|帮您高效快速上传组件至私有依赖库
- 一文详解GaussDB(DWS) 的并发管控和内存管控
- MemArts :高效解决存算分离架构中数据访问的组件
- 论文复现|Panoptic Deeplab(全景分割PyTorch)
- 动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏
- 云小课|云小课带您快速了解LTS可视化查看
- Karmada跨集群优雅故障迁移特性解析