1.名副其实程序员
一旦发现更好的名称,就换掉旧的。变量、函数或类的名称应该已经答复了全部的大问题。它该告诉你,它为何会存在,它作什么事,应该怎么用。若是名称须要注释来补充,那就不算是名副其实。编程
2.避免误导函数
3.作有意义的区分测试
废话都是冗余。variable一词永远不该当出如今变量名中。NameString会比Name好吗?编码
要区分名称,就以读者能鉴别不一样之处的方式来区分。spa
4.使用读的出来的名称设计
例如,modificationTimestamp要优于modymdhms.对象
5.使用可搜索的名称作用域
单字母名称和数字难以搜索。窃觉得单字母名称仅用于短方法中的本地变量。若变量或常量可能在代码中多处使用,则应赋予其便于搜索的名称。域名
6.避免使用编码
把类型或做用域编进名称里面,徒然增长了解码的负担。
例如IShapeFactory、m_dsc...
7.避免思惟映射
明确是王道。善用其能,编写其余人能理解的代码。
8.类名
名词或名词短语,不该当是动词。
9.方法名
动词或动词短语。
10.别扮可爱
宁肯明确,勿为好玩。言到意到,意到言到。
11.每一个概念对应一个词
给每一个抽象概念选一个词,而且一以贯之。
12.别用双关语
避免将同一单词用于不一样目的。代码做者应尽力写出易于理解的代码。
13.使用解决方案领域名称
尽可能减小依据所涉领域来命名。程序员要作太多技术性工做。给这些事取个技术性的名称一般是最靠谱的作法。
14.使用所涉问题领域的名称
若是不能用程序员熟悉的术语来给手头的工做命名,就采用所涉及问题领域而来的名称。
优秀的程序员和设计师,其工做之一就是分离解决方案领域和问题领域的概念。
15.添加有意义的语境
用良好命名的类、函数或者名称空间来放置名称,给读者提供语境。若是没这么作,给名称添加前缀就是最后一招了。
16.不要添加没用的语境
17.最后的话
取好名的最难之处在于须要良好的描述技巧和共有文化背景
函数是全部程序中的第一组代码。
函数的第一规则是要短小。
函数应该作一件事。作好这件事。只作这一件事。
若是函数只是作了该函数名下同一抽象层上的步骤,则函数仍是只作了一件事。编写函数毕竟是为了把大一些的概念(换言之,函数的名称)拆分为另外一抽象层上的一系列步骤。
函数中混杂不一样抽象层级,每每让人迷惑。
自顶向下读代码:向下规则。程序就像段落,每一段都描述当前抽象层级,并引用位于下一抽象层级的后续段落。
确保每一个switch都埋藏在较低的抽象层次,并且永远不重复,在系统其余部分看不到。
函数越短小,功能越集中,就越便于取个好名字。
长而具备描述性的名称。
若是每一个例程都让你感到深合己意,那就是整洁代码。
参数尽量少。参数和函数名处在不一样的抽象层级,它要求你了解目前并不特别重要的细节。
实际仍是保持函数只作一件事。有时具备隐藏的破坏性,对类中的变量作出未能预期的改动,致使古怪的时序性耦合及顺序依赖等等。
广泛而言,应避免使用输出参数。若是函数必需要修改某种状态,就修改所属对象的状态。
函数要么作什么事,要么回答什么事,两者不可兼得,避免混淆。
9.使用异常替代返回错误码
使得错误处理代码从主路径代码中分离出来,获得简化。
最好把try和catch代码块的主体部分抽离出来,另外造成函数。(错误处理就是一件事,函数应该只作一件事)
避免依赖磁铁。
重复多是软件中一切邪恶的根源。许多原则与实践规则都是为控制与消除重复而建立。
每一个函数、函数中的每一个代码块都应该有一个入口、一个出口(结构化编程规范)。只要函数保持短小,偶尔出现的return、break等没有坏处。
编程艺术是且一直就是语言设计的艺术,函数是语言的动词,类是名词。永远别忘记,真正的目标在于讲述系统的故事,而你编写的函数必须干净利落的拼装在一块儿,造成一种精确而清晰的语言,帮助你讲故事。