代码整洁之道

有意义的命名

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.最后的话

取好名的最难之处在于须要良好的描述技巧和共有文化背景

函数

函数是全部程序中的第一组代码。

1.短小

函数的第一规则是要短小。

2.只作一件事

函数应该作一件事。作好这件事。只作这一件事。

若是函数只是作了该函数名下同一抽象层上的步骤,则函数仍是只作了一件事。编写函数毕竟是为了把大一些的概念(换言之,函数的名称)拆分为另外一抽象层上的一系列步骤

3.每一个函数一个抽象层级

函数中混杂不一样抽象层级,每每让人迷惑。

自顶向下读代码:向下规则。程序就像段落,每一段都描述当前抽象层级,并引用位于下一抽象层级的后续段落。

4.switch语句

确保每一个switch都埋藏在较低的抽象层次,并且永远不重复,在系统其余部分看不到。

5.使用描述性的名称

函数越短小,功能越集中,就越便于取个好名字。

长而具备描述性的名称

若是每一个例程都让你感到深合己意,那就是整洁代码。

6.函数参数

参数尽量少。参数和函数名处在不一样的抽象层级,它要求你了解目前并不特别重要的细节。

  • 输入参数过多,难以测试。
  • 不太指望信息经过输出参数输出。
  • 避免使用标志参数(boolean),代表该函数不止作一件事。
  • 尽可能使用一些机制将二元函数转换成一元函数。
  • 两个以上的参数考虑封装成类,不是在做弊,封装性和某个概念的考虑。
  • 动词与关键词,要较好解释函数的意图,以及参数的顺序和意图。

7.无反作用

实际仍是保持函数只作一件事。有时具备隐藏的破坏性,对类中的变量作出未能预期的改动,致使古怪的时序性耦合及顺序依赖等等。

广泛而言,应避免使用输出参数。若是函数必需要修改某种状态,就修改所属对象的状态。

8.分隔开指令与询问

函数要么作什么事,要么回答什么事,两者不可兼得,避免混淆。

9.使用异常替代返回错误码

使得错误处理代码从主路径代码中分离出来,获得简化。

最好把try和catch代码块的主体部分抽离出来,另外造成函数。(错误处理就是一件事,函数应该只作一件事)

避免依赖磁铁。

10.别重复本身

重复多是软件中一切邪恶的根源。许多原则与实践规则都是为控制与消除重复而建立。

11.结构化编程

每一个函数、函数中的每一个代码块都应该有一个入口、一个出口(结构化编程规范)。只要函数保持短小,偶尔出现的return、break等没有坏处。

小结

编程艺术是且一直就是语言设计的艺术,函数是语言的动词,类是名词。永远别忘记,真正的目标在于讲述系统的故事,而你编写的函数必须干净利落的拼装在一块儿,造成一种精确而清晰的语言,帮助你讲故事。

相关文章
相关标签/搜索