首页 > 代码库 > Clean Code
Clean Code
代码整洁之道
1. 有意义的命名
1. 有意义的命名
名副其实
变量、函数或类的名称应该告诉你,它为什么会存在,它做什么事,应该怎么用,如果需要注释来补充,那就不算是名副其实。避免误导
- 某些系统的专有名词不要使用。
- 堤防使用不同之处较小的名称。比如XYZControllerForEfficientHandlingOfStrings和另一处XYZControllerForEfficientStorageOfStrings,就难以区分。
- 拼写前后不一致就是误导。
- 不要使用误导性的名称,比如使用小写字母l和大写字母O。
做有意义的区分
光是添加数字序列(a1,a2,……aN)或是废话(比如ProductInfo和ProductData,意思无啥区别,还不如叫Product)远远不够,应该依义命名。
错误的示例如下:程序员很难确定该调用哪个函数。
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
使用读的出来的名称
如果名称读不出来,讨论的时候就会像个傻鸟。使用可搜索的名称
名称长短应与其作用域大小相对应。e就是个不便于搜索的名称。避免使用编码
带编码的名称通常也不便发音,容易打错。- 匈牙利命名法:在C语言API的时代,编译器不会做类型检查,程序员需要使用这种标记法来帮助自己记住类型。Java和C#都是强类型(静态类型)的语言,在编译开始前就会进行类型检测,已经不需要这种标记法了。
- 成员前缀:不必使用“m_”来标明成员变量。应当将类和函数做的足够小,消除对成员前缀的需要。而且现在的编辑器可以通过颜色来区分变量类型。
避免思维映射
在作用域小时,循环计数器可能被命名为i,然后在多少情况下,单字母名称不是一个好的选择。类名
类名和对象名应该是名词或名词短语。方法名
方法名应当是动词或动词短语。属性访问器(get-)、修改器(set-)和断言(is-)应该根据其值命名。别使用俚语
每个概念对应一个词
给每个抽象概念选一个词,并且一以贯之。例如:fetch、retrieve和get来给多个类中的同种方法命名。
函数名称应当独一无二,而且保持一致,这样才能不借助多余的浏览就能找到正确的方法。别用双关语
比如add方法,如果这些add方法的参数列表和返回值在语义上等价,就没有问题。或者需要考虑是否用insert或append之类的词来命名才对。使用解决方案领域名称
尽管用计算机术语、算法名、模式名、数学术语。不该让协作者老是跑去问客户每个名称的含义,他们早该通过另一名称了解这个概念了。使用源自所涉及问题领域的名称
优秀的程序员和设计师,工作之一就是分离解决方案领域和问题领域的概念。与所涉领域更为贴近的代码,应当采用源自领域的名称。添加有意义的语境
很少有名称能够自我说明的——多少都不能。需要使用良好命名的类、函数或命名空间来放在名称,提供语境。如果没这么做,最后一招——添加前缀。不要添加没用的语境
只要短名称足够清楚,就比长名称要好。将项目缩写作为所有方法的前缀是非常糟糕的做法。
Clean Code