編寫可讀代碼的藝術(shù)——讀后感

第一部分 表面層次的改進

可讀性代碼的改進從 表面層次 的改進開始:選擇好的名字玻熙、寫好的注釋仔燕、代碼整潔的寫成更好的格式螟蝙。

第二章——把信息裝到名字里

無論是命名變量、函數(shù)還是類扼褪,都有很多相同的原則,嘗試把名字當(dāng)成一個小小的注釋語句粱栖,選擇一個好的名字话浇,讓其承載更多的信息。

  • 選擇專業(yè)的詞

    假設(shè)你有個Thread類:

    class Thread{
        void Stop();
    };
    

    Stop其實還可以闹究,但是如果該線程不能恢復(fù)幔崖,使用Kill應(yīng)該更好一些

  • 找更有表現(xiàn)力的詞

    下面列出一些表現(xiàn)力更強的單詞,依語境采用:

    send -> deliver 渣淤、 dispatch 赏寇、 announce 、 distribute 价认、 route
    find -> search 嗅定、 extract 、 locate 用踩、 recover
    start -> lanch 渠退、 create 、 begin 脐彩、 open 
    make -> create 碎乃、 set up 、 build 惠奸、 generate 梅誓、 compose 、 add 晨川、 new 
    
  • 用具體的名字代替抽象的名字

    在給變量证九,函數(shù)或者其他元素命名時,要把它描述的更具體而不是更抽象共虑。

  • 為名字附帶更多信息

    一個變量名就像是一個小小的注釋愧怜,有時候我們可以讓它更有幫助些

  • 附帶其他的重要屬性

  • 名字應(yīng)該有多長

    • 在小的作用域里可以使用短的名字
    • 首字母縮略詞和縮寫: doc = document
    • 丟掉沒用的詞
    • 利用名字的格式來傳遞含義

第三章——不會誤解的名字

  • 推薦使用 min 和 max 來表示(包含)極限
  • 推薦使用 first 和 last 來表示包含的范圍
  • 推薦使用 begin 和 end 來表示包含/排除范圍

第四章——審美

  • 原則:
    • 使用一致的布局,讓讀者很快就習(xí)慣這種風(fēng)格
    • 讓相似的代碼看上去相似
    • 把相關(guān)的代碼行分組妈拌,形成代碼塊

第五章——該寫怎樣的注釋

  • 什么地方不需要這注釋
  • 應(yīng)該記錄下來一些想法:為什么代碼寫成這樣而不是那樣拥坛、TODO、常量為什么是這個值
  • 站在讀者的角度去思考:
    • 預(yù)料到那部分的代碼會讓人搞不清楚尘分,加上注釋
    • 為讀者意料之外的行加上注釋
    • 在文件/類的級別使用“全局觀”注釋來解釋所有的部分如何一起工作的

第六章——寫出言簡意賅的注釋

  • 避免使用不明確的代詞
  • 盡量精確描述函數(shù)的行為
  • 精心挑選輸入/輸出的例子
  • 聲明代碼的高層次意圖猜惋,而非明顯的細節(jié)
  • 用嵌入注釋解釋難以理解的函數(shù)參數(shù)
  • 用含義豐富的詞語

第二部分——簡化循環(huán)和邏輯

第七章——把控制流變得易讀

  • 條件語句中參數(shù)的順序:左側(cè)的值傾向于不斷變化、右側(cè)的值更傾向于常量
  • if/else 語句塊的順序:首先處理正邏輯而不是負邏輯培愁、先處理簡單的情況
  • ?: 表達式:只有在簡單的情況下使用
  • 避免 do/while 循環(huán)
  • 最小化嵌套
  • 從函數(shù)中提前返回

第八章——拆分超長表達式

  • if line.split(':')[0].strip() == "root"改為username = line.split(':')[0].strip();if username == "root"
  • 拆分巨大的語句

第九章——變量與可讀性

變量越多著摔,就越難全部跟蹤他們的動向
變量的作用越到,就需要跟蹤它的動向越久
變量改變的越頻繁定续,就越難以跟蹤它的當(dāng)前值
  • 減少變量谍咆,即那些妨礙的變量禾锤。通過離開處理結(jié)果來消除“中間結(jié)果”變量。
  • 減少每個變量的作用域摹察,越小越好恩掷。
  • 只寫一次的變量更好,那些只設(shè)置一次值的變量(或者 const 供嚎、final 黄娘、常量)使得代碼更容易理解。

第三部分——重新組織代碼

第十章——抽取不相關(guān)的子問題

第十一章——一次只做一件事

應(yīng)該把代碼組織得一次只做一件事情克滴。

第十二章——把想法變成代碼

學(xué)會用自然語言描述你要實現(xiàn)的功能逼争,寫出和描述匹配的代碼。

第十三章——少寫代碼

  • 從項目中消除不必要的功能劝赔,不要過度設(shè)計
  • 重新考慮需求氮凝,解決版本最簡單的問題
  • 經(jīng)常性地通讀標準庫的整個API,保持對它們的熟悉程度

第四部分——精選話題

第十四章——測試與可讀性

  • 使測試易于閱讀和維護
  • 讓錯誤消息更具可讀性
  • 選擇好的測試輸入
  • 簡化輸入值
  • 為測試函數(shù)命名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末望忆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竿秆,更是在濱河造成了極大的恐慌启摄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幽钢,死亡現(xiàn)場離奇詭異歉备,居然都是意外死亡,警方通過查閱死者的電腦和手機匪燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門蕾羊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帽驯,你說我怎么就攤上這事龟再。” “怎么了尼变?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵利凑,是天一觀的道長。 經(jīng)常有香客問我嫌术,道長哀澈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任度气,我火速辦了婚禮割按,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘磷籍。我一直安慰自己适荣,他們只是感情好现柠,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著束凑,像睡著了一般晒旅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汪诉,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天废恋,我揣著相機與錄音,去河邊找鬼扒寄。 笑死鱼鼓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的该编。 我是一名探鬼主播迄本,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼课竣!你這毒婦竟也來了嘉赎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤于樟,失蹤者是張志新(化名)和其女友劉穎公条,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迂曲,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡靶橱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了路捧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片关霸。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖杰扫,靈堂內(nèi)的尸體忽然破棺而出队寇,到底是詐尸還是另有隱情,我是刑警寧澤涉波,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布英上,位于F島的核電站,受9級特大地震影響啤覆,放射性物質(zhì)發(fā)生泄漏苍日。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一窗声、第九天 我趴在偏房一處隱蔽的房頂上張望相恃。 院中可真熱鬧,春花似錦笨觅、人聲如沸拦耐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杀糯。三九已至扫俺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固翰,已是汗流浹背狼纬。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骂际,地道東北人疗琉。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像歉铝,于是被迫代替她去往敵國和親盈简。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349

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

  • 還記得當(dāng)時在特訓(xùn)營聽到的第一句話嗎太示? 代碼是給人看的柠贤,偶爾在機器上運行一下。 既然代碼是給人看的类缤,那么怎樣才能讓人...
    芝麻香油閱讀 867評論 0 2
  • 第一部分 打好基礎(chǔ) Laying the Foundation 第一章 歡迎進入軟件構(gòu)建的世界 Welcome t...
    白樺葉閱讀 4,611評論 0 17
  • 前言 vue源碼看了有一段時間了,由于偷懶,一直沒有做記錄,今天重看,發(fā)現(xiàn)很多知識點有些遺忘,果然懶還是不能偷的....
    一二三kkxx閱讀 2,106評論 0 4
  • 怎么做迷你小蛋糕呢种吸?這個我知道,先把奶放在一個大盤子里呀非。然后把大盤子放在烤箱里【刀ⅲ烤熟了之后拿出來岸裙。再把它一...
    靜待花開abc閱讀 247評論 0 0
  • 本來該昨天發(fā)的,玩累了速缆,注冊京東降允,找東西亂七八糟的折騰的心累。艺糜。 早上早早地爬起來剧董,騎快五十里地到抱犢寨,一個多小...
    奎志閱讀 120評論 0 0