代码整洁之道

2016年7月14日 晚开始读

Ærlighed i små ting er ikke nogen lille ting.(小处诚实非小事)——不只要重视小处,更要在小处诚实

5S原则(全员生产维护 Total Productive Maintenance,TPM)

  • 整理(Seiri),或谓组织。搞清楚事物之所在——通过恰当地命名之类的手段——至关重要。
  • 整顿(Seiton),或谓整齐。每段代码都该在你希望它所在的地方——如果不在哪里,就需要重构了。
  • 清楚(Seiso),或谓整洁。清理工作地的拉线、油污和边角废料。对于那种四处遗弃的带注释的代码及反应过往或期望的无注释代码——除之而后快
  • 清洁(Seiketsu),或谓标准化。有关如何保持工作地清洁的组内共识。开发组内使用一贯的代码风格和实践手段。这些从哪里来?
  • 身美(Shitsuke),或谓纪律(自律)。在实践中贯彻规程,并时时体现于个人工作上,而且要乐于改进。

你当用为自己第一个孩子命名般的谨慎来给变量命名

我们过早地放弃了在代码上的工作,并不是因为它业已完成,而是因为我们的价值体系关注外在表现甚于关注要交付之物的本质。

我们使一切可见。我们晾出脏衣服。我们坦承代码状态,因为它永不完美。我们日渐成为完整的人,配得起神的眷顾,也越来越接近细节中的伟大之处。

代码猴子于童子军军规:离开时要比发现时更整洁。

前言

习艺之要有二:知和行。你应当习得有关原则、模式和实践的知识,穷尽应知之事,并且要对其了如指掌,通过刻苦实践掌握它。

学写整洁代码很难。它可不止于要求你掌握原则和模式。你得在这上面花功夫。你须自行实践,且体验自己的失败。你须观察他人的实践和失败。你须看看别人是怎样蹒跚学步,再转头研究他们的路数。你须看看别人是如何绞尽脑汁做出决策,又是如何为错误决策付出代价。
 阅读代码–大量代码。而且你要去琢磨某段代码好在什么地方、坏在什么地方。
启示本身不值钱,启示与案例研究中清理代码的具体决策之间的关系才有价值。

 


假使你是位医生,病人请求你在给他做手术前别洗手,因为那会花太多时间,你会照办吗?本该是病人说了算;但医生却绝对应该拒绝遵从。为什么?因为医生比病人更了解疾病和感染的风险。医生如果按病人说的办,就是一种不专业的态度(更别说是犯罪了)。

同理,程序员遵从不了解混乱风险的经理的意愿,也是不专业的做法。

  • 我怎么才能写出整洁的代码?
  • 整洁对代码有何意义?
  • 如何在意代码?
  • 有意义的命名?

20160725

第二章 有意义的命名

2.1、介绍

2.2、名副其实

注意命名,而且一旦发现有更好的名称,就换掉旧的。

我们应该选择指定了计量对象和计量单位的名称。

选择体现本意的名称能让人更容易理解和修改代码。

代码的模糊度:即上下文在代码中未被明确体现的程度。

2.3、避免误导

避免留下掩藏代码本意的错误线索。应当避免使用与本意相悖的词。

提防使用不同之处较小的名称。

以同样的方式拼写出同样的概念才是信息,拼写前后不一致就是误导。

2.4、做有意义的区分

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

2.5、使用读得出来的名称

例如:generationTimestamp、modificationTimestamp、recordId……

2.6、使用可搜索的名称

长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。

单字母名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应。若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称。

2.7、避免使用编码

2.7.1 匈牙利语标记法

2.7.2 成员前缀

应当把类和函数做得足够小,消除对成员前缀的需要。

2.7.3 接口和实现

2.8、避免思维映射

聪明程序员与专业程序员之间的区别在于,专业程序员了解,明确是王道。专业程序员善用其能,编写其他人能理解的代码。

2.9、类名

类名和对象名应该是名词或者名词短语。例如:Customer、WikiPage、Account和AddressParser

2.10、方法名

方法名应当是动词或者动词短语。例如:postPayment、deletePage或save。属性访问器、修改器和断言应该根据其值命名,并依Javabean标准加上get、set和is前缀。

2.11、别扮可爱

不要使用俗语、俚语

2.12、每个概念对应一个词

2.13、别用双关语

2.14、使用解决方案领域名称

使用那些计算机科学(Computer Science,CS)属于、算法名、模式名、数学属于

2.15、使用源自所涉问题领域的名称

分离解决方案领域和问题领域的概念。与所涉问题领域更为贴近的代码,应当采用源自问题领域的名称。

2.16、添加有意义的语境

你需要用有良好命名的类、函数或名称空间来放置名称,给读者提供语境。如果没这么做,给名称加前缀就是最后一招。

2.17、不要添加没用的语境

只要短名称足够清楚,就要比长名称好。别给名称添加不必要的语境。

2.18、最后的话

取好名字最难的地方在于需要良好的描述技巧共有文化背景

发布者

虚妄的存在感

我尊重你的存在感,但我鄙视你虚妄的存在感。