讀書筆記重寫可讀代碼的藝術(shù)

      網(wǎng)友投稿 691 2022-05-30

      一、代碼應該易于理解

      這里提出一個概念-理解代碼時間,我們應該讓別人理解代碼的時間越短越好。

      而不是所用的代碼越短越好。

      1 變量名稱

      避免使用temp/size/foo/get/stop這種意義不清晰或者表達意思不多的詞匯

      循環(huán)中如果有意義,避免使用i/j,要用users/numbers這種有業(yè)務意義的詞

      數(shù)值帶單位,比如秒還是毫秒都是時間,但是加上_ms或者_s就會一下子看出來不會處理出錯

      作用域很小的時候名稱可以是短的

      不需要進行首字母縮寫

      2 命名技巧

      min和max表示極限

      first和last表示包含的范圍

      begin和end表示包含/排除范圍

      布爾值要求定義明確,比如 use_ssl = true

      和期望表示一致

      3 審美

      相似的代碼應當看上去相似

      必要時使用列對齊,增加空白

      用段落隔開增加邏輯

      作用

      消除大量代碼重復

      添加新代碼更簡單

      閱讀變得更直白

      4 注釋

      寫注釋之后會提高理解代碼的速度,業(yè)務簡單邏輯復雜的也要寫注釋

      注釋加入思考過程,供以后參考

      關(guān)鍵字

      todo 還沒處理

      fixme 已知的無法運行代碼

      hack 粗糙的解決問題方式

      xxx 危險重要的問題

      常量加上注釋

      標記意料之中的疑問

      提前聲明代碼的問題

      全局、總結(jié)的注釋

      聲明高層次含義,而不是明顯的細節(jié)

      二、簡化循環(huán)和邏輯

      1 條件語句中的參數(shù)順序

      比較的值是不斷變化的,比較的表達式的值傾向于常量

      優(yōu)先正邏輯,優(yōu)先簡單邏輯,優(yōu)先異常

      三目運算符只處理最簡單的邏輯,默認使用if/else

      避免使用do/while

      從函數(shù)中提前返回return結(jié)果,通過提前return減少邏輯嵌套

      2 拆分超長的表達式

      引入做解釋的變量

      使用總結(jié)變量

      德摩根定理,取反之后顛倒邏輯,增加可讀性

      短路邏輯會增加閱讀時間

      3 變量的可讀性

      減少沒有價值的臨時變量,減少中間結(jié)果

      縮減作用域

      操作變量的地方越多,越難確定他的值

      三、重新組織代碼

      工程學就是大問題拆成小問題再把這些問題的方案放回一起。把這條原則應用于代碼會使代碼更健壯并且更容易讀。

      這也就是我們最基本的分而治之以及抽象的思想。

      1 積極地發(fā)現(xiàn)并抽取不相關(guān)的子邏輯

      關(guān)注更高層次的代碼

      把一些解決了不相關(guān)的子問題的代碼,抽出到獨立的代碼中

      子問題更容易被測試

      創(chuàng)建大量通用代碼/工具類

      簡化已有接口,按需重塑接口

      把一般代碼和項目專有代碼分開

      2 一次只做一件事

      應該把代碼組織得一次只做一件事情。

      整理碎片,切分小任務

      2 想法變成代碼

      清晰的自然語言描述邏輯,注意關(guān)鍵詞和短語,寫出匹配的代碼

      如果你不能把問題說明白,那估計是缺少了什么東西或者定義

      泰迪熊太難了~

      3 少些代碼

      最好讀的代碼就是沒有代碼。

      質(zhì)疑和拆分需求,學會縮減需求

      定期刪除沒用的代碼

      重用庫

      經(jīng)常熟悉標準庫的API,避免重復編寫基礎(chǔ)代碼

      三、精選話題

      1 測試與可讀性

      【讀書筆記】重寫可讀代碼的藝術(shù)

      測試具有可讀性,測試代碼可以當做非正式的文檔

      對使用者隱去不重要的細節(jié),以便更重要的細節(jié)會更突出

      讓錯誤信息更具可讀性

      簡化輸入值。又簡單又能完成工作的測試值更好

      給測試命名一般Test_開頭

      參考資料

      《編寫可讀代碼的藝術(shù)》

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:uboot初始化中,為何要設置CPU為SVC模式而不是設置為其他模式
      下一篇:好好編程-物流項目08【整合靜態(tài)資源文件】
      相關(guān)文章
      亚洲综合无码一区二区痴汉| 亚洲日日做天天做日日谢| www亚洲精品久久久乳| 国产精品高清视亚洲精品| 亚洲人成免费网站| 亚洲videos| 国产成人精品日本亚洲11| 亚洲AV成人噜噜无码网站| 亚洲a级片在线观看| 亚洲国产成人va在线观看网址| 亚洲免费视频网站| 中文字幕在线观看亚洲| 亚洲视频在线一区| 久久亚洲精品无码VA大香大香| 亚洲综合男人的天堂色婷婷| 91亚洲性爱在线视频| 亚洲国产精品张柏芝在线观看| 亚洲一区免费在线观看| 成人区精品一区二区不卡亚洲| 亚洲精品美女久久7777777| 色偷偷噜噜噜亚洲男人| 亚洲Av无码国产情品久久 | 亚洲精品视频在线观看你懂的| 亚洲精品WWW久久久久久| 久久久久久亚洲精品不卡| 亚洲精品无码成人片久久| 亚洲av综合avav中文| 久久青青草原亚洲av无码app | 亚洲精品日韩中文字幕久久久| 亚洲色图视频在线观看| 亚洲AV色吊丝无码| 亚洲第一综合天堂另类专 | 亚洲国产日韩女人aaaaaa毛片在线| 亚洲欧洲国产综合| 亚洲依依成人亚洲社区| 国产午夜亚洲精品不卡电影| 国产午夜亚洲精品国产成人小说| 亚洲V无码一区二区三区四区观看| 7777久久亚洲中文字幕蜜桃| 亚洲人和日本人jizz| 亚洲国产AV无码一区二区三区 |