🏠個人主頁:塵覺主頁
文章目錄
- 前言
- 一、可讀性的重要性
- 二、用名字表達代碼含義
- 三、避免名字歧義
- 四、良好的代碼風格
- 五、注釋的價值
- 六、如何編寫注釋
- 七、提高控制流的可讀性
- 八、拆分長表達式
- 九、變量與可讀性
- 十、抽取函數
- 十一、一次只做一件事
- 十二、用自然語言表述代碼
- 十三、減少代碼量
- 😄總結
前言
在軟件開發中,
程序員大部分時間并不是在寫代碼,而是在讀代碼。我們要閱讀自己的代碼,也要閱讀他人的代碼。代碼的可讀性不僅影響開發效率,還會直接影響項目的長期維護成本。可讀性良好的代碼能夠降低溝通成本,減少理解錯誤,并且讓重構與擴展更加容易。相反,晦澀難懂的代碼不僅容易埋下 bug,還會讓團隊成員不愿意修改它,從而影響整個系統的健康演進。
本篇總結了如何提升代碼可讀性的實用方法,涵蓋命名、注釋、風格、控制流設計、變量管理、函數抽取等方面,為開發者提供系統化的參考。
一、可讀性的重要性
編程有很大一部分時間是在閱讀代碼,可讀性良好的代碼能顯著提升效率和質量。只有在極少數性能關鍵場景下才可暫時犧牲可讀性,其余情況下,可讀性應當被放在首位。
二、用名字表達代碼含義
-
選用語義化單詞:
send
→ deliver、dispatch、announce、distribute、routefind
→ search、extract、locate、recoverstart
→ launch、create、begin、openmake
→ create、set up、build、generate、compose、add、new
-
循環迭代器避免
i, j, k
,可改為userIndex
、memberIndex
。 -
名字長度與作用域成正比:作用域大 → 名字長,作用域小 → 名字短。
三、避免名字歧義
- 先思考別人是否會誤解這個名字。
- 布爾命名加前綴:
is
、can
、should
、has
。 - 數量范圍:
min
、max
;空間范圍:first
、last
;排除范圍:begin
、end
。
四、良好的代碼風格
- 使用空行和縮進組織邏輯。
- 對齊注釋,保持整齊:
int a = 1; // 注釋
int b = 11; // 注釋
int c = 111; // 注釋
- 變量定義順序應與業務對象順序一致。
五、注釋的價值
-
不要為顯而易見的代碼寫注釋,如 getter/setter。
-
注釋不是名字的替代品,應優先寫好變量名。
-
注釋可用于:
- 記錄設計思路;
- 提醒特殊情況;
- 標記未完成工作:
標記 | 用法 |
---|---|
TODO | 待做 |
FIXME | 待修復 |
HACK | 臨時粗糙方案 |
XXX | 危險,需特別注意 |
六、如何編寫注釋
- 簡潔清晰:
// Student's name -> Student's score
Map<String, Integer> scoreMap = new HashMap<>();
- 用示例說明:
// Example: add(1, 2) returns 3
int add(int x, int y) {return x + y;
}
- 使用專業名詞縮短解釋。
七、提高控制流的可讀性
- 條件表達式:變量在左,常數在右。
- 三目運算符僅限邏輯簡單的情況。
- 避免使用
goto
。 - 在循環中使用
return
減少嵌套。
八、拆分長表達式
- 使用解釋性變量:
username = line.split(':')[0].strip()
if username == "root":...
- 運用邏輯定律簡化表達式:
if (!(a || b)) { ... }
九、變量與可讀性
- 減少控制流變量:用
break
/return
替代布爾標記。 - 減小作用域:變量應盡量靠近使用點。
- 避免全局變量:JavaScript 中應始終用
var/let/const
聲明變量。
優化示例
原始代碼:
var setFirstEmptyInput = function(new_value) {var found = false;var i = 1;var elem = document.getElementById('input' + i);while (elem != null) {if (elem.value === '') {found = true;break;}i++;elem = document.getElementById('input' + i);}if (found) elem.value = new_value;return elem;
}
優化后:
var setFirstEmptyInput = function(new_value) {for (var i = 1; true; i++) {var elem = document.getElementById('input' + i);if (elem === null) return null;if (elem.value === '') {elem.value = new_value;return elem;}}
};
十、抽取函數
- 函數應圍繞高層目標,次要邏輯可抽取為獨立函數。
- 抽取的好處:更容易測試、調試、修改。
- 抽取要適度,避免過度分散。
十一、一次只做一件事
- 單一職責原則:每段代碼或每個函數只完成一個任務。
- 若任務過多,應拆分成多個函數或邏輯塊。
十二、用自然語言表述代碼
- 寫代碼前先用偽代碼描述邏輯,再翻譯成代碼。
- 能幫助理清思路,提升結構清晰度。
十三、減少代碼量
- 避免過度設計。
- 善用標準庫與現有工具,減少冗余實現。
😄總結
代碼不僅是讓計算機執行的指令,更是團隊成員之間溝通的語言。可讀性優先的原則能夠顯著降低溝通成本、提高維護效率。
提升可讀性的方法包括:合理命名、避免歧義、保持良好風格、合理注釋、簡化控制流、縮小變量作用域、抽取函數、專注單一任務、借助偽代碼、減少冗余實現。
“寫給人看的代碼,順便能讓機器運行”,應成為每位開發者的信條。
😁熱門專欄推薦
想學習vue的可以看看這個
java基礎合集
數據庫合集
redis合集
nginx合集
linux合集
手寫機制
微服務組件
spring_塵覺
springMVC
mybits
等等等還有許多優秀的合集在主頁等著大家的光顧感謝大家的支持
🤔歡迎大家加入我的社區 塵覺社區
文章到這里就結束了,如果有什么疑問的地方請指出,諸佬們一起來評論區一起討論😁
希望能和諸佬們一起努力,今后我們一起觀看感謝您的閱讀🍻
如果幫助到您不妨3連支持一下,創造不易您們的支持是我的動力🤞