clean code讀書筆記(三)

一蠢涝、類

  1. 類從變量開始玄呛,公共靜態(tài)常量-->私有靜態(tài)變量-->私有實體變量,公共函數(shù)應(yīng)跟在變量列表之后和二。
  2. 類要短小把鉴,職責(zé)單一,每個類有且只有一條加以修改的理由儿咱。不能起含義模糊的詞庭砍,如Processor,Manager混埠,Super等怠缸。
  3. 高內(nèi)聚。類中的每一個方法都應(yīng)該操作一個或多個實體變量钳宪。保持函數(shù)和參數(shù)列表的短小揭北。
  4. 將容易發(fā)生變化的細節(jié)隔離,使用接口和抽象類吏颖。類應(yīng)該依賴于抽象搔体,而不是具體細節(jié)。

二半醉、系統(tǒng)

  1. 系統(tǒng)的構(gòu)造和使用分開疚俱。即將系統(tǒng)的啟動過程和啟動后運行時的邏輯分開。
  2. 使用工廠模式缩多、依賴注入將創(chuàng)建對象隔離呆奕。
  3. 最佳的系統(tǒng)架構(gòu)由模塊化的關(guān)注面領(lǐng)域組成(模塊化+關(guān)注領(lǐng)域切分)养晋,每個關(guān)注面均用純java(或其他語言)對象實現(xiàn)。不同的領(lǐng)域之間用最不具有侵害性的方面或類方面工具整合起來梁钾。這種架構(gòu)能測試驅(qū)動绳泉。
  4. 系統(tǒng)需要領(lǐng)域特定語言。領(lǐng)域特定語言允許所有抽象層級和應(yīng)用程序中的所有領(lǐng)域姆泻,從高級策略到底層細節(jié)零酪,使用pojo表達。
  5. 在所有抽象層級上拇勃,意圖都應(yīng)該清晰可辨四苇。
  6. 遵循簡單設(shè)計原則:(1)運行所有測試 (2)不可重復(fù)(3)表達程序員的意圖(4)盡可能減少類和方法的數(shù)量(5)以上規(guī)則按照其重要程度排列
  • 規(guī)則1:TDD。
  • 規(guī)則2~4: 重構(gòu)潜秋,提高內(nèi)聚蛔琅,降低耦合胎许,減少重復(fù)峻呛。

三、并發(fā)編程

  1. 分離并發(fā)相關(guān)代碼和其他代碼辜窑。
  2. 嚴格限制對可能被共享的數(shù)據(jù)的訪問钩述。
  3. 盡量縮小同步范圍。
  4. 偶發(fā)事件的錯誤一定要重視穆碎,并定位問題嘗試解決牙勘。
  5. 再創(chuàng)建多線程時,一定要確保非線程代碼可工作且無bug所禀。
  6. 線程代碼需要在不同操作系統(tǒng)平臺上進行測試方面,不同操作系統(tǒng)之間具有差異性。

四色徘、代碼味道

  1. 注釋中不應(yīng)該存在不恰當(dāng)信息恭金,冗余注釋,同時注釋保持簡潔褂策,字斟句酌横腿。注釋掉的代碼就直接刪除
  2. 系統(tǒng)構(gòu)建應(yīng)該由單個命令逐步構(gòu)建,構(gòu)建過程不應(yīng)該需要一系列神秘指令或者環(huán)境依賴腳本來構(gòu)建單個元素斤寂。
  3. 系統(tǒng)構(gòu)建時耿焊,單個指令就可以運行全部單元測試。
  4. 函數(shù)不得超過3個入?yún)ⅰ?/li>
  5. 如果函數(shù)非要修改某個東西的狀態(tài)遍搞,就修改他的對象狀態(tài)罗侯。
  6. 布爾參數(shù)作為flag去控制函數(shù)做不同的事,這種參數(shù)應(yīng)該消滅溪猿。
  7. 永遠不會被調(diào)用的函數(shù)應(yīng)該被刪除歇父。
  8. 明顯的行為未被實現(xiàn)蒂培,應(yīng)修改函數(shù)行為。
  9. 不應(yīng)該忽視代碼中任何一個警告榜苫。雖然關(guān)閉警告有助于構(gòu)建成功护戳,但會陷入無窮無盡的調(diào)試和錯誤的風(fēng)險。
  10. 不要出現(xiàn)重復(fù)代碼垂睬,重復(fù)代碼可以結(jié)合實際情況媳荒,使用多態(tài),if/else, switch/case, 模板方法和策略方式解決驹饺。
  11. 創(chuàng)建分離較高層級一般性概念與較低級層級細節(jié)概念的抽象模型钳枕。創(chuàng)建抽象類來容納較高層級概念,創(chuàng)建派生類來容納較低層級概念赏壹,確保分離完整鱼炒。所有較低層級概念放在派生類中,所有較高層級概念放在基類中蝌借。例如:只與細節(jié)實現(xiàn)實現(xiàn)有關(guān)的常量昔瞧、變量和工具函數(shù)不應(yīng)該放在基類中出現(xiàn)∑杏樱基類應(yīng)該對這些一無所知自晰。
  12. 類中方法越少越好,函數(shù)知道的變量越少越好稍坯,類擁有的實體變量越好越好酬荞。隱藏數(shù)據(jù),工具函數(shù)瞧哟,常量混巧,臨時變量,不要創(chuàng)建擁有大量方法和大量實體變量的類勤揩。不要為子類創(chuàng)建大量受保護變量和函數(shù)咧党。盡量保持接口緊湊,通過限制信息來控制耦合度雄可。
  13. 本地變量應(yīng)該正好在其首次被使用的位置上面聲明凿傅,私有函數(shù)應(yīng)該正好在其首次被調(diào)用的位置下面定義。垂直距離要短数苫。
  14. 變量名聪舒,方法名取名要前后一致。如方法processValidationRequest虐急,下一個方法應(yīng)該取類似名字箱残。
  15. 代碼應(yīng)具有強有力的表達力。
  16. 通常應(yīng)該傾向于選用非靜態(tài)方法,如果有疑問被辑,就是用非靜態(tài)函數(shù)燎悍。如果的確需要靜態(tài)函數(shù),確保沒有機會打算讓它有多態(tài)行為盼理。
  17. 拒絕magic number谈山。
  18. 避免否定性條件。
  19. 每個函數(shù)只做一件事宏怔。
  20. 不要繼承常量奏路,需要多處使用的常量應(yīng)放在單獨的class中,使用靜態(tài)導(dǎo)入臊诊。
  21. 采用描述性名稱鸽粉。
  22. 方法,變量的命名應(yīng)符合抽象層級抓艳。
  23. 使用測試覆蓋工具触机,別略過小測試。
  24. 當(dāng)發(fā)現(xiàn)某個函數(shù)有bug時玷或,最好能編寫多個測試case來盡可能的全面測試儡首。有可能會發(fā)現(xiàn)bug不只一個。
  25. 竭盡所能使每一個測試速度夠快庐椒。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椒舵,一起剝皮案震驚了整個濱河市蚂踊,隨后出現(xiàn)的幾起案子约谈,更是在濱河造成了極大的恐慌,老刑警劉巖犁钟,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棱诱,死亡現(xiàn)場離奇詭異,居然都是意外死亡涝动,警方通過查閱死者的電腦和手機迈勋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醋粟,“玉大人靡菇,你說我怎么就攤上這事∶自福” “怎么了厦凤?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長育苟。 經(jīng)常有香客問我较鼓,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任博烂,我火速辦了婚禮香椎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禽篱。我一直安慰自己畜伐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布躺率。 她就那樣靜靜地躺著烤礁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肥照。 梳的紋絲不亂的頭發(fā)上脚仔,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音舆绎,去河邊找鬼鲤脏。 笑死,一個胖子當(dāng)著我的面吹牛吕朵,可吹牛的內(nèi)容都是我干的猎醇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼努溃,長吁一口氣:“原來是場噩夢啊……” “哼硫嘶!你這毒婦竟也來了发皿?” 一聲冷哼從身側(cè)響起紫新,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤镊靴,失蹤者是張志新(化名)和其女友劉穎颈渊,沒想到半個月后夹界,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赌莺,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡南蹂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年算凿,在試婚紗的時候發(fā)現(xiàn)自己被綠了凳谦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忆畅。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尸执,靈堂內(nèi)的尸體忽然破棺而出家凯,到底是詐尸還是另有隱情,我是刑警寧澤如失,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布绊诲,位于F島的核電站,受9級特大地震影響岖常,放射性物質(zhì)發(fā)生泄漏驯镊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望板惑。 院中可真熱鬧橄镜,春花似錦、人聲如沸冯乘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裆馒。三九已至姊氓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喷好,已是汗流浹背翔横。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梗搅,地道東北人禾唁。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像无切,于是被迫代替她去往敵國和親荡短。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容