命名为什么重要
**缓存失效**和**取名**是计算机科学领域的两大难题。
命名的重要性何在
标识符指代码库中由程序员命名的所有内容,包括分配给类型(类、接口、结构体、委托或枚举)、变量、方法/函数,模块,库以及命名空间的名称。
- 标识符是代码库中重要的组成部分。
- 标识符在代码审查中起到一定作用。
- 标识符是最常见的文档类型。
- 标识符可以充当信标。
与命名有关的不同观点
- 标识符应该遵循语法规则。
- 标识符在代码库中应该保持一致。
- 最初的命名实践影响深远
程序员在创建新项目时可能需要格外留意命名问题,因为早期阶段采用的命名方式可能会贯穿始终。
问题描述 | 解释 | 反面示例 |
---|---|---|
首字母大写有误 | 标识符应该遵守一致的首字母大写规定 | page counter |
使用连续的下划线 | 标识符不宜包括多条连续的下划线 | page__counter |
未使用词典单词 | 标识符应该使用词典中出现的单词,且仅在缩写比完整的单词更常用时才使用缩写 | pag_countr |
标识符过长 | 标识符不宜超过4个单词 | page_counter_converted_and_ |
标识符过短 | 标识符不宜少于8个字符 | P page |
枚举标识的声明顺序有误 | 除非另有原因,否则枚举类型应该按照字母顺序进行声明 | CardValue = { ACE, JACK, EIGHT} |
下划线的位置有误 | 标识符不宜以下划线开头或结尾 | __page__counter___ |
包括类型信息 | 不宜采用匈牙利命名法或类似的命名约定将类型信息写入标识符 | int__page_counter |
使用全数字标识 | 标识符不宜完全由数字或表示数字的单词构成 | FIFTY |
从认知的角度剖析命名
- 规范的命名方式对短时记忆有利
- 含义明确的标识符对长时记忆有利
- 标识符可以包括不同类型的信息以帮助理解
a. 领域知识:标识符对思考代码领域有利。比如,“customer”。
b. 编程概念:标识符对思考程序设计有利。
c. 命名约定:某些情况下,标识符还包括长时记忆存储的命名约定信息。
评估标识符质量的时机
代码审查时评估标识符质量的良机。