1.什么是整洁的代码
代码逻辑直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依赖某种分层战略完善错误处理代码;性能调至最优,省的引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。 ——Bjarne Stroustrup
正如破窗理论。窗户破损的建筑让人觉得似乎无人照管。于是别人也不再关心。他们放任窗户继续破损。最终自己也加入了破坏活动,一扇破损的窗户开辟了大厦走向倾颓的道路。
所以在我们处理错误代码时要在细节花心思。
整洁的代码力求集中。每个函数、每个类和每个模块都全身关注于一事,完全不受四周细节的干扰和污染。
整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直接了当的控制语句。
代码块应该尽量小,越小越好。
整洁代码特性:能通过所有测试;没有重复代码;提现系统的全部设计理念;包括尽量少的实体,比如类、方法、函数等。
2.该如何做
2.1 有意义的命名
变量、函数或类的名称应该已经答复了所有的大问题。它应该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来解释就不算名副其实。
不要用一些通用或者专有名称来命名,不用要一些类型的词来命名比如list,除非真的是list类型,可以用group、accounts等代替。
尽量不要使用一些amount、info、data、message类似的明知故问的一些函数名,不然谁知道是什么鬼。
使用一些易于查找的命名,避免日后定位时从百万代码中找个数字5之类的东西。
类名不应该是个动词。想manager、processor、打他、info应当避免使用。
方法名应该是个动词或者动词短语,比如加上get、set前缀等。
合理利用语境,可以通过算法将大函数分解成更小的函数而变得干净利落。
2.2 函数应有的样子
函数的第一规则要短小,第二条规则还要更短小。
每个函数都一目了然。每个函数都只说一件事,而且每个函数都会依序把你带到下一个函数,这就是函数应该达到的短小程度。
函数应该只做一件事。做好这件事。只做这一件事。
要确保函数只做一件事,函数的语句都要在同一个抽象层
函数越短小,功能越集中,就越便于取个好名字。
别害怕长名称。长而具有描述性的名称要比短而令人费解的名称好。
命名方式保持一致。
函数参数个数最理想的数字是0 其次是1 再次是2 应该避免3或者更多。
抽离try/catch代码块:
public void delete (Page page) {
try{ deletePage(page) }
catch(Exception e){ logError(e) }
}
我们要不断的在源代码中消灭重复
2.3 注释该如何存在
别给糟糕的代码加注释——重新写吧
若编程语言有足够的表达力,就不那么需要注释
TODO可以作为应该去做,却还没有实现的工作。
直接把代码注释掉是讨厌的做法,别人会想代码还放在那,是有原因的或许还很重要,就不敢删除。而注释掉的代码只能沦为渣滓。无用的代码坚决删除,一般我是不允许我的代码里有大段注释的。
2.4 格式
格式 团队统一缩进换行的等规则老生常谈 因为我们想要系统有着一以贯之的风格。
我们应该尽力保持代码行短小,我一向遵循无需横向滚动原则。