總結,基本和目錄也差不多。用來時刻提醒自己編寫可維護,易讀的代碼
第一章
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二章
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三章 函數
1.函數要短小
2.一個函數只包含一個功能
3.函數裏儘量只包含一個縮進,有利於文檔的註釋和代碼的理解
4.確保Switch在低抽象層級.(因爲Switch天生就是用來,違背了函數只做一件事的原則)
5.使用描述性的名稱,讓它能夠較好的描述函數縮做的事情(功能越是集中,程序越短小,越是有利於你的你給你的函數取一個好名字)
6.函數的參數儘量少,最好的就是沒有,除非有很必要的情況,否則不要使用三個參數及以上
【標識參數】儘量不要使用標識參數,有了bool這個參數,就說明這個函數並不是單一功能,而是根據bool的值在執行準備好的功能。這個方法可以拆成兩個方法
【一元函數】堅持使用者這種形式的一元函數(對於轉換,使用帶返回值的寫法可讀性會強很多)
【二元函數】二元函數其實還好。
正常的情況,關於位置的函數有兩個參數x和y就很正常。但是有的函數的順序需要額外的學習約定。所以在一些情況下,二元函數是可以繼續優化的。比如
方案一:writeField(outputStream, name)-------->將writeField寫成outPutStream的成員之一:outputStream.writeField(name)
方案二:把outputStream寫成當前類的成員變量,從而無需傳遞它。
方案三:分離出類似FieldWriter的新類,在其構造器中採用outputStream,並且包含一個write方法
【三元函數】三元函數的排序琢磨忽略問題難度倍增,寫三元函數之前儘量考慮清楚
【多個參數】如果函數的看起來需要兩個三個或者是三個以上的參數,就說明其中的一些參數就該封裝爲類了
舉例:Circle makeCircle(double x, double y, double radius)
Circle makeCircle(Point center, double radius)
【參數列表】略 P41 Line3
【動詞與關鍵詞】對於一元函數來說,函數和參數應當形成一種非常良好的動/名詞形式,例如write(name)
7.無副作用
8.分隔指令與詢問
9.使用異常替代返回錯誤碼
10.別重複自己
11.結構化編程
12.如何書寫這樣的代碼
先是想什麼寫什麼,然後再打磨它,直至她成爲自己心中的樣子。
我們開始寫函數時,都是冗長而複雜,有太多的縮進,過長的參數列表,取名肆意,重複代碼多,然後打磨代碼,分解函數,修改名稱,消除重複,縮短和重新安裝方法,有時還可能會拆散類,同時保持測試通過,然後按照上面列出的規則,組裝這些函數。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第四章