讓程式碼具有可讀性的10種最佳實踐

banq發表於2018-09-19
這是一組編寫程式碼的10個實踐,重點是提高可讀性和降低複雜性。

我已經編寫了20多年的程式碼。我與17個編寫不同語言的團隊合作,共建了數百個專案。這些內容包括從簡單的部落格站點到支援3,000個請求/秒的API,以及暢銷應用程式。

根據這些經驗,結合我讀過的書籍,我已經確定了程式碼中最重要的東西:可讀性。

從表面上看,可讀性似乎是主觀的。在語言,程式碼庫,團隊之間可能有所不同。但是當你仔細觀察時,所有程式碼中都有核心元素使它具有可讀性。許多程式設計師離計算機太近了,如果只看程式碼執行,則沒有其他問題。但是離人類就太遠了。

在過去的幾個月裡,我努力將這些元素提煉成10種編寫程式碼的實踐,重點是提高可讀性和降低複雜性。不幸的是,許多人將這些視為過於瑣碎。太基礎了。但我向你保證,我遇到的每一段不好的程式碼都無法應用這些做法。每一點好的程式碼都可以找到這些實踐中的一個(如果不是很多)。

1. 格式化
格式化可能會浪費太多精力,比如有很多標籤與空格,格式雖然不是程式設計中的很重要部分,但是採用標準格式並讓格式化能夠自動化,你就可以重新專注編寫程式碼。

2.死程式碼
所有那些沒有註釋的程式碼塊,未使用的變數和無法訪問的程式碼都是腐爛的。實際在表明:“沒有人在關心這段程式碼”。因此,隨著時間的推移,這些死程式碼將腐蝕你的程式碼庫。這是經典的破窗理論。你必須尋找和銷燬死程式碼。

3.巢狀程式碼
幾乎所有程式碼的基礎都是邏輯。透過邏輯可以進行決策,迭代和計算。常常會有邏輯分支或迴圈程式碼,從而導致深層巢狀的程式碼塊。雖然這對於計算機執行沒有什麼問題,但會阻礙閱讀程式碼者的閱讀效率:程式碼看起來很複雜且難以理解。

4.使用物件
儘管目前物件導向程式設計時代,我們仍然沉浸在原始的痴迷中。我們使用長引數列表、資料塊和自定義陣列/字典結構,這些可以重構為物件,這不僅形式化了資料結構,而且提供了原始資料所伴隨的所有重複邏輯的基礎。這是OO的好處。

5. 大塊程式碼
當你確定自己擁有大量程式碼時,就要隨時識別,重新組合和重構這些程式碼。這個簡單的過程能讓你發現程式碼塊的上下文和抽象級別,又能將程式碼正確地重構為更易讀和更簡單的塊。

6.命名
當然,命名事情很難。有一個小技巧適用於程式設計:延遲命名,不要卡在命名上,只需保持不斷編碼。如果必須,將變數命名為句子;只需保持不斷編碼,我保證,當你完成功能或工作時,一個好名字將出現。

7.忽視評論
這是讓我走上專注於可讀性的道路,儘管我努力分享,但至少有一個人會討厭我。你的程式碼別人有評論是絕對必要的,相反,如果你的程式碼別人沒有評論可能就要重寫。

8. 符合邏輯的方法返回值
你的目標應該是返回更合理的值,理想情況下,即使在空的情況下,也需要讓呼叫者的程式碼能繼續進行。如果確實要返回null也要用更好的方式表達。

9. 三規則
出現三次重複,就要重構了。

10. 對稱
這是直接來自肯特貝克的實施模式,它簡單地指出:

程式碼中的對稱性是指在任何地方出現相同的想法。

這說起來容易做起來難。對稱性體現了寫作的創造性。它可能因語言、程式碼庫到程式碼庫以及團隊而異。因此,你可以花費你的自然生命來追求它。然而,一旦開始在程式碼中應用對稱性,就會出現一個更純粹的形式,並且程式碼會很快形成。


10 practices for readable code

[該貼被banq於2018-09-20 07:53修改過]

相關文章