讓程式碼具有可讀性的10種最佳實踐
這是一組編寫程式碼的10個實踐,重點是提高可讀性和降低複雜性。
我已經編寫了20多年的程式碼。我與17個編寫不同語言的團隊合作,共建了數百個專案。這些內容包括從簡單的部落格站點到支援3,000個請求/秒的API,以及暢銷應用程式。
根據這些經驗,結合我讀過的書籍,我已經確定了程式碼中最重要的東西:可讀性。
從表面上看,可讀性似乎是主觀的。在語言,程式碼庫,團隊之間可能有所不同。但是當你仔細觀察時,所有程式碼中都有核心元素使它具有可讀性。許多程式設計師離計算機太近了,如果只看程式碼執行,則沒有其他問題。但是離人類就太遠了。
在過去的幾個月裡,我努力將這些元素提煉成10種編寫程式碼的實踐,重點是提高可讀性和降低複雜性。不幸的是,許多人將這些視為過於瑣碎。太基礎了。但我向你保證,我遇到的每一段不好的程式碼都無法應用這些做法。每一點好的程式碼都可以找到這些實踐中的一個(如果不是很多)。
1. 格式化
格式化可能會浪費太多精力,比如有很多標籤與空格,格式雖然不是程式設計中的很重要部分,但是採用標準格式並讓格式化能夠自動化,你就可以重新專注編寫程式碼。
2.死程式碼
所有那些沒有註釋的程式碼塊,未使用的變數和無法訪問的程式碼都是腐爛的。實際在表明:“沒有人在關心這段程式碼”。因此,隨著時間的推移,這些死程式碼將腐蝕你的程式碼庫。這是經典的破窗理論。你必須尋找和銷燬死程式碼。
3.巢狀程式碼
幾乎所有程式碼的基礎都是邏輯。透過邏輯可以進行決策,迭代和計算。常常會有邏輯分支或迴圈程式碼,從而導致深層巢狀的程式碼塊。雖然這對於計算機執行沒有什麼問題,但會阻礙閱讀程式碼者的閱讀效率:程式碼看起來很複雜且難以理解。
4.使用物件
儘管目前物件導向程式設計時代,我們仍然沉浸在原始的痴迷中。我們使用長引數列表、資料塊和自定義陣列/字典結構,這些可以重構為物件,這不僅形式化了資料結構,而且提供了原始資料所伴隨的所有重複邏輯的基礎。這是OO的好處。
5. 大塊程式碼
當你確定自己擁有大量程式碼時,就要隨時識別,重新組合和重構這些程式碼。這個簡單的過程能讓你發現程式碼塊的上下文和抽象級別,又能將程式碼正確地重構為更易讀和更簡單的塊。
6.命名
當然,命名事情很難。有一個小技巧適用於程式設計:延遲命名,不要卡在命名上,只需保持不斷編碼。如果必須,將變數命名為句子;只需保持不斷編碼,我保證,當你完成功能或工作時,一個好名字將出現。
7.忽視評論
這是讓我走上專注於可讀性的道路,儘管我努力分享,但至少有一個人會討厭我。你的程式碼別人有評論是絕對必要的,相反,如果你的程式碼別人沒有評論可能就要重寫。
8. 符合邏輯的方法返回值
你的目標應該是返回更合理的值,理想情況下,即使在空的情況下,也需要讓呼叫者的程式碼能繼續進行。如果確實要返回null也要用更好的方式表達。
9. 三規則
出現三次重複,就要重構了。
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修改過]
相關文章
- 使用 Macro 讓你的程式碼更簡潔,更具有可讀性Mac
- 聊聊如何讓你的業務程式碼具有可擴充套件性套件
- 如何寫出具有良好可測試性的程式碼?
- 程式碼可讀性隨想
- 可落地的DDD程式碼實踐
- 使用JSDoc提高程式碼的可讀性JS
- 程式碼行數越多可讀性越好?
- React 程式碼共享最佳實踐方式React
- 編寫優雅程式碼的最佳實踐
- 基於雲原生閘道器的可觀測性最佳實踐
- [探索]怎樣讓 JS - API 具有更好的實用性JSAPI
- 掌握TypeScript:10個最佳實踐提高程式碼質量.mdTypeScript
- [譯] 程式碼審查之最佳實踐
- dart系列之:dart程式碼最佳實踐Dart
- CATIA許可管理最佳實踐
- 在pandas中使用pipe()提升程式碼可讀性
- mysql讀寫分離的最佳實踐MySql
- Java Web應用的程式碼分層最佳實踐。JavaWeb
- 編寫高效能 Java 程式碼的最佳實踐Java
- 程式碼審查或評審的最佳實踐 - FogBugz
- 【翻譯】編寫程式碼註釋的最佳實踐
- Vert.x 程式碼結構最佳實踐
- Capital許可證管理最佳實踐API
- [分享]2021 年對 React 前端程式設計師的 10 個程式碼最佳實踐建議React前端程式設計師
- 命名&可閱讀的程式碼
- 【原創】【深入淺出系列】之程式碼可讀性
- Airtest指令碼的重構與最佳化:提升測試效率和可讀性AI指令碼
- 讓View具有彈性效果的動畫——SpringAnimationView動畫Spring
- 最佳實踐:Kubernetes 叢集中 DNS 故障的可觀測性與根因診斷DNS
- Spring Boot 安全性最佳實踐Spring Boot
- MVVM 最佳解讀和實踐MVVM
- 一對一影片直播原始碼,利用列舉提升程式碼的可讀性原始碼
- Shell指令碼最佳實踐指令碼
- 自研、好用、夠快、穩定、程式碼可讀性強的ORMORM
- 使用 ABAP Open SQL 的 Select AS 別名,提高程式碼可讀性SQL
- CATIA軟體許可管理最佳實踐
- 有效的微服務:10 個最佳實踐微服務
- 程式碼質量第 3 層 - 可讀的程式碼