《代码整洁之道》(一) ---有意义的命名

110 阅读3分钟

有意义的命名

起个好名字的简单规则

名副其实

  • 命名应准确的描述这个变量: 为什么存在,做了什么事,该怎么用.降低变量的模糊度
  • 一旦发现更好的名称,就替换掉旧的

避免误导

  • 变量的外形要容易区分

    bad:
    cosnt XYZControllerForEfficientHandlingOfStrings = 1;
    const XYZControllerForEfficientStrageOfStrings = 2;
    
  • 变量所表达的意思要容易区分,禁止混用data和info,a和the

    bad:
    prodctInfo与prodctData
    
  • 减少不必要的描述

    • table永远不要出现在表名中
    • nameString,后缀string就是完全多余的描述

易读

便于见字照着拼读,无论是阅读代码还是讨论代码的时候,非常有用

避免重复

重复的命名空间的出现是会让读者很恼火的,因为识别重复是不容易的,这样的重复也会导致问题,让代码因此而臃肿,且当需要修改时很可能要修改所有重复的地方

bad:
setUp()
suiteSetUp()
tearDown()
suiteTearDown()

使用搜的到的名称

对于单字母或者数字,再搜索的时候很难单独搜到,它们往往是其他代码的一部分,在这方面长名称要胜于短名称,而名称的长短应该与其作用域大小相对应.

Max_CLASSES_PER_STUDENT容易,找7就难了

避免使用额外的编码

不要将类型,作用域,各种前导字母,前缀编写进名称里面,容易让人在理解必要的代码之外分出来精力理解这些额外的编码,同时带编码的词语也不便发音

避免产生思维映射

在循环中通常会使用i,j,k,item等惯用字母进行操作,但他们实际上并没有表达明确表达出自己是干什么的,需要读者在脑中映射为具体的真实概念;例如一个r表示的是不包含主机名和模式的小写url的话,读这样的代码压力一定很大

不只在循环中,在所有编码中都要避免使读者产生思维映射

类名

类名和对象名应该是名词或名词短语,不应该是动词,应该避免Data,Info,Processor,Manager这样的类名

方法名

方法名应当是动词或者动词短语

别耍小聪明

不要用俗话,俚语来命名,虽然有时后挺好玩,但是宁可明确,毋为好玩

每个概念对应一个词

每个抽象概念固定使用一个词来描述,对管理者这个类命名时,如果即用Manager来命名,在另一个地方又用Admin来命名,这会让人感到疑惑: 为什么不使用一个命名呢,难道是表示的意思不同?从而产生理解负担

别用双关语

对于一词多义的单词尽量不要使用,保证一词一义

使用解决方案领域名称

只用程序员才会阅读你的代码,尽量使用计算机领域的术语,而非问题出现领域的术语

使用问题涉及领域的名称

若不能用熟悉的术语进行命名,那么应使用所涉及问题领域的而来的名称,这能保证有迹可循

添加有意义的语境

不要使用没用的语境