阅读本文有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。你如果想成为更好的程序员,那就请细细品味文章内容,它绝不会让你失望。
代码整洁之道教给大家如何编写整洁的代码,而不仅仅是能运行的代码,这对于编程者而言很重要。我在读这本书的第一遍时没什么感觉,但在读第二遍时觉得它确实挺不错的,如果有机会的话我会读第三遍。下面是我在读书过程中摘录的精华内容,希望大家认真对待。各位看官如果读完本文觉得书中的精华内容挺合自己的胃口,那就可以抽出时间认真地读一下这本书。
1、函数应该做一件事。只做这件事。做好这件事。
public static string renderPageWithSetupsAndTeardowns(PageData pageData,bool isSuite){
if(isTestPage(pageData)){
includeSetupAndTeardownPages(pageData,isSuite);
}
return pageData.getHtml();
}
问题在于很难知道那件该做的事是什么。上述代码只做了一件事吗?其实也可以看作三件事:
(1)检测页面是否为测试页
(2)如果是测试页,就把设置和分拆步骤容纳近来
(3)无论是否为测试页,最终都渲染成HTML
注意:
这三件事都是实现渲染功能的具体步骤,他们都在该函数名下的同一抽象层级上,因此函数还是只做了一件事。
2、如果每个例程都让你感到深合己意,那就是整洁代码。
3、向函数传入布尔值简直就是骇人听闻的做法。这样做方法签名会立刻变得复杂起来,大声宣布本函数不止做一件事。如果标识为true将会这样做,如果标识为false则会那样做。我们应该把标识为true和false这两种情况写到两个函数中,这样逻辑更清晰。
4、如果函数需要两个、三个或三个以上参数,就说明其中一些参数应该被封装为类了。
5、给函数取个好名字,能较好地解释函数的意图,以及参数的顺序和意图。对于一元函数,函数和参数应当形成一种良好的动词/名词形式。例如,write(name)就相当令人认同。protected UserInfo Initialize()函数和返回值也可以形成良好的动词/名词形式。
6、函数应该只做一件事,错误处理就是一件事。因此,处理错误的函数不应该做其他事。这意味着如果关键字try在某个函数中存在,它就该是这个函数的第一个单词,而且catch/finally代码块之后不该有其他逻辑的内容。
抛开所有细节不谈,代码整洁之道总体来说可以分为以下7点:
- 运行所有测试
- 减少重复代码
- 提高表达力
- 提早构建简单抽象
- 类和方法都只做好一件事
- 尽量减少类和方法的数量
- 努力,让营地比你来时更干净。努力,让世界比你来时更干净。努力,让代码比你签出时更干净。