代码整洁之道

有意义的命名

1.名副其实

一旦发现更好的名称,就换掉旧的。变量、函数或类的名称应该已经答复了所有的大问题。它该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。

2.避免误导

3.做有意义的区分

废话都是冗余。variable一词永远不应当出现在变量名中。NameString会比Name好吗?

要区分名称,就以读者能鉴别不同之处的方式来区分

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等没有坏处。

小结

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

 

 

 

 

转载于:https://my.oschina.net/u/2939155/blog/1590183

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值