讀《代碼整潔之道》有感

畢設全是編程。最開始編了一個有一千多行的Main函數(shù),處理Word文檔里的數(shù)學公式。里面還用了不少goto語句。功能雖然實現(xiàn)了,心里面感到很可恥。改用面向?qū)ο蟮慕M織結構編,劃分了一些類,每個類明顯簡潔了不少。
為了解決goto,又把遞歸玩得越來越溜了。終于2300多行的代碼變成了不到900行。
在這個過程中,越發(fā)覺得,編寫好代碼,把代碼編的像一首詩而不是一坨屎,簡直是一種享受。我修改代碼的過程中,發(fā)現(xiàn)了幾本書非常好。比如《凌波微步 開發(fā)案例集》還有我手頭的這本《代碼整潔之道》。
做個讀書筆記吧。

  • 函數(shù)名應該傳遞信息,讀你代碼的人也是程序員,所以盡量使用可查找、CS專業(yè)的詞語,其次才是領域?qū)S忻~。不要怕長名稱。千萬不要用一些不明所以,自作聰明的函數(shù)名,變量名。

  • 類名要是名詞,簡短為好。

  • 函數(shù)盡量短小,多少算短小呢——20行封頂。

  • 一個函數(shù)只做一件事情,做好這件事情。如何辨別是否函數(shù)是做了一件事情呢,看這個函數(shù)是否還能再拆出一個函數(shù)。

  • 每個函數(shù)中的語句應該保證在同一個抽象的層級上。用“自頂向下”的模式編程。如“要想怎樣1,就要怎樣2,要想怎樣2,就要怎樣3……”

  • 函數(shù)的參數(shù)越少越好,0參比1參好,2參勉強接受,再多就不好了。如果函數(shù)看來需要兩個、三個或三個以上的參數(shù),就說明其中一些參數(shù)應該封裝為類了

  • 函數(shù)名與參數(shù)間最好應該形成一種良好的“動詞/名詞對應”,例如write(name).

  • 抽離Try...Catch塊,因為錯誤處理本身就是一件事,

  • 由于函數(shù)足夠小,故break,return,continue均可以出現(xiàn)

  • 有一點一定要注意,沒人能做到一開始就寫出這樣的程序

  • 永遠不要忘記,真正的目標在于講好系統(tǒng)的故事

  • 記住,所有的注釋都是迫不得已
    好的注釋有:
    1.法律信息
    2.提供信息的注釋
    3.對意圖的解釋
    4.闡釋
    5.警示信息
    6.ToDo注釋
    壞注釋有:
    1.喃喃自語
    2.多余的注釋(無意義)
    3.誤導性注釋
    4.循規(guī)式注釋
    5.日志式注釋
    6.位置標記
    如//Actions//////////////////////////
    7.括號后的注釋
    如{
    }//while
    8.署名
    9.注釋掉的代碼
    10.非本地信息
    11.信息過多

  • 代碼整潔關乎溝通,而溝通是專業(yè)開發(fā)者的頭等大事

  • 實體變量應該在類的頂部聲明
    代碼在垂直位置上的區(qū)隔、靠近、引用與函數(shù)的毗鄰

  • 數(shù)據(jù)抽象
    我們不愿意把暴露數(shù)據(jù)的細節(jié),更愿意以抽象的形態(tài)表述數(shù)據(jù)。這并非使用借口/賦值器就可以萬事大吉的
    面向過程式代碼難以添加新的函數(shù),因為必須修改所有類

  • 德墨忒爾定律
    類C的方法f只能調(diào)用以下對象的方法
    C
    由f創(chuàng)建的對象
    作為參數(shù)傳給f的對象
    由C的實體變量持有的對象

數(shù)據(jù)結構類的形式
1.數(shù)據(jù)傳遞對象
{
public a;
public b;
}
2."bean"結構
{
private a;
private b;

public class get{}
.......

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容