1.有意义的命名(代码的整洁之道)

1.有意义的命名(代码的整洁之道)


目录

  1. 名副其实
  2. 避免误导
  3. 做有意义的区分
  4. 使用读的出来的名称
  5. 使用可搜索的名称
  6. 避免使用编码
  7. 避免思维映射
  8. 类名
  9. 方法名
  10. 每个概念对应一个词
  11. 别用双关语
  12. 使用解决方案领域名称
  13. 使用源自所涉问题领域的名称
  14. 添加有意义的语境
  15. 不要添加没有的语境

注:代码的整洁之道PDF: https://pan.baidu.com/s/16PLDWPiusGjcUfW_jgOm5w 密码: s708


1. 名副其实

  1. 变量、函数或类的名称应该已经答复了所有的大问题。它应该告诉你,它为什么存在,做什么事,应该怎么用。
int d; //消逝的时间,以日计
  1. 名称d什么也没说明,应该选择指明了计量对象和计量单位的名称
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

2. 避免误导

  1. 提防使用不同之处较小的名称。比如XYZControllerForEfficientHandlingOfStrings和另一处的XYZControllerForEfficientStorageOfStrings.
  2. 以同样的方法拼写出同样的概念才是信息,拼写前后不一致就是误导。
  3. 别用accountList来指一组账号,除非它真的是List类型。List一词对程序员有特殊意义。如果包纳账号的容器并非是个List,就会引起错误的判断。所以,用accountGroup或bunchOfAccounts,甚至直接用accounts都会好一些。

3. 做有意义的区分

  1. 废话是没有意义的区分,假设你有一个Product类,还有一个ProductInfo或ProductData类,那么它们的名称虽然不同,意思却无区别。
  2. 废话都是冗余的,Variable一词永远不应该出现在变量名中。Table永远不应该出现在表名中。
  3. 要区分名称,就要可以鉴别不同之处的方式来区分。

4. 使用读的出来的名称

5. 使用可搜索的名称

  1. 单字母和数字常量有个问题,很难在一大篇文字中找出来。
  2. 找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了。
  3. 单字母名称仅用于短方法中的本地变量,名称的长度应与其作用域大小相对应。

6. 避免使用编码

7. 避免思维映射

  1. 不应该让看的人在脑中把你的名称翻译为他们熟知的名称。
  2. 单字母变量名就是个问题,在作用域较小、也没有冲突时,循环计数器自然有可能被命名为i或j或k,这是因为传统上惯用单字母做循环计数器。

8. 类名

  1. 类名和对象名应该是名词或名词短语,如Customer、WikiPage、Account和AddressParser。
  2. 避免使用Manager、Processor、Data和Info这样的类名。
  3. 类名不应当是动词。

9. 方法名

  1. 方法名应当是动词或动词短语,如postPayment、deletePage和save。

10. 每个概念对应一个词

  1. 给每个抽象概念选一个词,并且一以贯之。例如,使用fetch、retrieve和get来给在多个类中的同种方法命名,你怎么记得住哪个类中的那个方法呢?
  2. 函数名称应当独一无二,而且要保持一致。

11. 别用双关语

12. 使用解决方案领域名称

  1. 记住,只有程序员才会读你的代码,所以,尽管用计算机科学术语、算法名、模式名、数学术语。
  2. 依据问题所涉领域来名称是不可取的,因为不该让协作者老是问客户每个名称的含义。
  3. 对于熟悉房问题模式的程序员来说,名称AccountVisitor富有意义。
  4. 给这些事取个技术性的名称,通常是最靠谱的做法。

13. 使用源自所涉问题领域的名称

14. 添加有意义的语境

  1. 你需要用良好的命名的累、函数或名称空间来放置名称,给读者提供语境,如果没这么做,给名称添加前缀就是最后一招了。
  2. 设想有名为firstName、lastName、street、houseNumber、city、state和zipcode的变量,当它们搁一块的时候,明确构成了一个地址。不过假如只在某个方法看见孤零零一个state变量,就很难腿短那是地址的一部分
  3. 可以添加前缀来提供语境,更好的方案是创建名为Address的类。

15. 不要添加没有的语境

  1. 只要短名称足够清楚,就要比长名称好。别给名称添加不必要的语境。
  2. 对应Address类的实体来说,accountAddress和customerAdderss都是不错的名称,不过用在类名上就不太好了。Address是个好类名。如果需要与MAC地址、端口地址和Web地址相区别,会考虑使用PostalAddress、MAC和URI,这样的名称更为准确,而精准正是命名的要点。

猜你喜欢

转载自blog.csdn.net/weixin_41910694/article/details/110896225
今日推荐