可讀程式碼的10種實踐
這是一組編寫程式碼的10個實踐,重點是提高可讀性和降低複雜性。
我已經編寫了20多年的程式碼。我與17個編寫不同語言的團隊合作,共建了數百個專案。這些內容包括從簡單的部落格站點到支援3,000個請求/秒的API,以及暢銷應用程式。
根據這些經驗,結合我讀過的書籍,我已經確定了程式碼中最重要的東西:可讀性。
從表面上看,可讀性似乎是主觀的。在語言,程式碼庫,團隊之間可能有所不同。但是當你仔細觀察時,所有程式碼中都有核心元素使它具有可讀性。許多程式員離計算機太近了,如果只看程式碼執行,則沒有其他問題。但是離人類就太遠了。
在過去的幾個月裡,我努力將這些元素提煉成10種編寫程式碼的實踐,重點是提高可讀性和降低複雜性。不幸的是,許多人將這些視為過於瑣碎。太基礎了。但我向你保證,我遇到的每一段不好的程式碼都無法應用這些做法。每一點好的程式碼都可以找到這些實踐中的一個(如果不是很多)。
1. 格式化
格式化浪費了太多精力,標籤與空格,你會發現格式不是程式設計中的重要部分。採用標準格式並自動化。然後才能重新專注編寫程式碼。
2.死程式碼
所有這些註釋塊,未使用的變數和無法訪問的程式碼都是腐爛的。他們對讀者實際在說:“我不關心這段程式碼”。因此,衰變的迴圈開始了。隨著時間的推移,這個死程式碼將腐蝕您的程式碼庫。這是經典的破窗理論。你必須尋找和銷燬死程式碼。雖然它沒有成為你的主要焦點,但後生可畏。
3.巢狀程式碼
幾乎所有程式碼的基礎都是邏輯。它可以進行決策,迭代和計算。通常會導致分支或迴圈程式碼,從而建立深層巢狀的程式碼塊。雖然這可能很容易跟蹤計算機執行情況,但它可能會花費人類的許多精神開銷:程式碼看起來很複雜且難以理解。
4.使用物件
儘管目前面向物件程式設計時代,我們仍然沉浸在原始的痴迷中。我們使用長引數列表、資料塊和自定義陣列/字典結構,這些可以重構為物件,這不僅形式化了資料的結構,而且提供了原始資料所伴隨的所有重複邏輯的基礎。
5. 大塊
雖然我不遵守硬編碼,但程式碼塊確實達到了臨界長度,當你確定自己擁有大量程式碼時,就有機會識別,重新組合和重構這些程式碼。這個簡單的過程能讓你發現程式碼塊的上下文和抽象級別,又能將程式碼正確地重構為更易讀和更簡單的塊。
6.命名
當然,命名事情很難。有一個小技巧適用於程式設計:包括命名 - 延遲,不要卡在命名上,只需保持編碼。如果必須,將變數命名為句子;只需保持編碼,我保證,當你完成功能或工作時,一個好名字將出現。
7.刪除評論
這是讓我走上專注於可讀性的道路,儘管我努力分享,但至少有一個人會討厭我。評論是絕對必要的,相反,你應該重寫沒有評論的程式碼。
8. 符合邏輯的返回
你的目標應該是返回更合理的值,理想情況下,即使在空的情況下,也需要呼叫程式碼能繼續進行。如果確實有特殊情況,那麼對於返回null也有更好的方式進行溝通。
9. 三規則
它通過延遲來抵消我們對抗重複的需要,直到我們有更多的資料做出明智的決定。
10. 對稱
這是直接來自肯特貝克的實施模式,它簡單地指出:
程式碼中的對稱性是指在任何地方出現相同的想法。
這說起來容易做起來難。對稱性體現了寫作的創造性。它可能因語言、程式碼庫到程式碼庫以及團隊而異。因此,你可以花費你的自然生命來追求它。然而,一旦開始在程式碼中應用對稱性,就會出現一個更純粹的表單,並且程式碼會很快形成。