《代碼整潔之道》閱讀筆記

有很多人說作為一個(gè)程序員,必須看看《代碼整潔之道》(clean code),雖然自己也閱讀了并實(shí)踐了一些公司總結(jié)的前后端代碼規(guī)范,但總覺得缺少點(diǎn)什么,這個(gè)書與一般的代碼規(guī)范的區(qū)別在于,代碼規(guī)范記錄的是死的條目,拿來直接照著用就可以了,而這本書從一個(gè)更深層的角度剖析了如何寫出高質(zhì)量代碼的問題。

代碼的質(zhì)量與整潔都成正比,這是整本書的中心,我主要閱讀了第一、二、三、四、五章,這些章節(jié)的內(nèi)容與目前的工作內(nèi)容緊密相關(guān),將以下較為重要的點(diǎn)整理摘錄如下。

整潔代碼

項(xiàng)目經(jīng)常在初期進(jìn)展迅速,但在后期卻慢如蝸牛,因?yàn)槊看蔚男薷亩紩?huì)影響到其他地方的兩三處代碼,混亂的增加,團(tuán)隊(duì)的生產(chǎn)力持續(xù)下降,管理層只好增加更多的人手到項(xiàng)目中,但事與愿違,新人并不熟悉系統(tǒng)。
進(jìn)度和代碼質(zhì)量可能互相矛盾,項(xiàng)目經(jīng)理護(hù)衛(wèi)項(xiàng)目的進(jìn)度和需求,開發(fā)人員則抱怨需求脫離了最初的設(shè)計(jì),哀嘆進(jìn)度太緊張,沒法好好干活,制造混亂無助于趕上期限,趕上期限唯一的方法——始終盡可能的保持代碼整潔。
寫出整潔的代碼,需要遵循大量的小技巧,不斷去實(shí)踐以獲得“整潔感”。
“破窗理論”也適用于軟件項(xiàng)目開發(fā),開到別人不規(guī)整的代碼,放任自己也參與了破壞活動(dòng)。

有意義的命名

  1. 名副其實(shí)。如果命名需要注釋來說明,就不叫名副其實(shí)。
  2. 避免誤導(dǎo)。hp、aix、sco不應(yīng)該作為變量名,應(yīng)為它們是某些平臺(tái)的專有名稱。提防使用不同之處較小的名稱,比如XYZContorllerForEfficientHandlingOfStrings和XYZControllerForEffientStorageOfStrings。避免大寫O和小寫L作為變量名,可能會(huì)被看作阿拉伯?dāng)?shù)字0和1。
  3. 做有意義的區(qū)分。不能僅僅為滿足編譯器的的需要而寫代碼,代碼更重要的是給人來閱讀的。
  4. 使用讀得出來的名稱。
  5. 使用便于搜索的名稱。
  6. 使用解決方案領(lǐng)域的名稱。只有程序員才會(huì)讀你的代碼。
  7. 不要添加沒用的語境。比如說在一個(gè)Item類中,不必將主鍵設(shè)置為ItemId.

函數(shù)

  1. 盡量避免長函數(shù),函數(shù)的第一規(guī)則是要短小。if語句 else語句 while語句其中的函數(shù)應(yīng)該只有一行。
  2. "函數(shù)應(yīng)該只做一件事。做好這件事。只做一件事",判斷一個(gè)函數(shù)是否只做了一件事,就是看是否能再拆出一個(gè)函數(shù)。
  3. 要確保函數(shù)只做一件事,要確保函數(shù)中的語句都要在同意抽象層級(jí)上。
  4. 使用描述性的名稱,描述函數(shù)做的事。別害怕長名稱,長而具有描述性的名稱,要比描述性的長注釋好。
  5. 最理想的參數(shù)數(shù)量是零,其次是一,再次是二, 盡量避免三參數(shù)函數(shù),有足夠多的理由才能用三個(gè)以上參數(shù),如果需要多個(gè)參數(shù),就說明其中一些參數(shù)應(yīng)該封裝為類了。
  6. 使用異常替代返回錯(cuò)誤碼
  7. 別重復(fù)自己。重復(fù)可能是軟件中一切邪惡的根源,許多原則與實(shí)踐規(guī)則都是為控制和消除重復(fù)而創(chuàng)建的。

注釋

  1. 注釋的恰當(dāng)用法是彌補(bǔ)我們?cè)谟么a表達(dá)意圖時(shí)的遭遇的失敗。
  2. 注釋存在的時(shí)間越久,就離其所描述的代碼越遠(yuǎn),越來越變得全然錯(cuò)誤。
  3. 注釋不能美化糟糕的代碼。
  4. 最好用代碼而不是注釋說明來闡述行為
  5. 避免循規(guī)式注釋 例如 要求每個(gè)函數(shù)都要有javadoc注釋,這樣的注釋只會(huì)搞亂代碼,有可能誤導(dǎo)讀者,javadoc注釋額外的形式要求等同于八股文章

垂直格式

  1. 每個(gè)空白行都是一條線索,標(biāo)識(shí)出新的獨(dú)立概念,空白行隔離開了概念,靠近的代碼行則暗示了他們之間的緊密聯(lián)系。
  2. 變量聲明應(yīng)盡可能的靠近其使用位置。
  3. 如果某個(gè)函數(shù)調(diào)用了另外一個(gè),就應(yīng)該把它們放到一起,而且調(diào)用者應(yīng)該盡可能放在被調(diào)用者上面。
  4. 每個(gè)每個(gè)程序員都有自己喜歡的格式規(guī)則,但如果在一個(gè)團(tuán)隊(duì)中工作,就是團(tuán)隊(duì)說了算。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,190評(píng)論 25 708
  • 目錄及筆記鏈接 序 丹麥諺語:小處誠實(shí)非小事。 建筑師路德維希:神在細(xì)節(jié)之中。 日本的 5S 哲學(xué): 整理(整理、...
    小鐳Ra閱讀 1,543評(píng)論 3 3
  • Our deepest fear is not that we are inadequate. Our deepe...
    簡記微語閱讀 277評(píng)論 0 0
  • 鮮花是美麗的,因?yàn)樗龐善G欲滴,馨香陣陣;小草是美麗的,因?yàn)樗鷻C(jī)勃勃,綠茵茸茸;陽光是美麗的,因?yàn)樗饷⑺纳?,燦爛...
    愛我所愛的閱讀 386評(píng)論 4 4
  • 最近突然發(fā)現(xiàn)一個(gè)問題: 我多數(shù)時(shí)候是通過移動(dòng)設(shè)備看電子書的,除了沒有紙質(zhì)書給人的質(zhì)感,不能享受翻書的聲音,一切都好...
    三月行者閱讀 411評(píng)論 0 2

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