降低認知復雜度的五個整潔代碼技巧
降低認知復雜度是幫助您編寫安全、可維護和可靠代碼的關鍵,這將使開發人員(包括您自己)更快樂。
譯自5 Clean Code Tips for Reducing Cognitive Complexity,作者 John Clifton。
你可能理解試圖理解別人舊代碼(甚至是你自己的代碼)帶來的挫敗感。時間流逝讓你記憶模糊,現在你已經無法理解代碼的邏輯。
創建你和其他人可以理解的代碼至關重要。降低認知復雜度是幫助你編寫安全、可維護和可靠的干凈代碼的關鍵,這將使其他開發人員(包括你自己)在長期內更快樂。以下是如何采取紀律性方法。
1. 編寫團隊會感謝你的代碼
軟件開發非常像團隊運動。理解你編寫的代碼如何融入整體項目以及其他需要閱讀代碼的開發人員如何理解它至關重要。
圈復雜度(Cyclomatic complexity)最初被引入作為一種衡量模塊控制流測試和維護難易程度的方法。這個公式可以幫助根據代碼中分支的數量來評估需要多少測試。它不會很好地反映出你或你的隊友將來理解和維護代碼的難度。
2. 生活并非一帆風順
線性代碼是你的朋友。如果所有代碼都是一個接一個的命令鏈 - 沒有循環或曲折 - 你就不會有任何問題在腦海中理清所有事情。在代碼中添加循環和分支會使理解和處理代碼變得越來越困難。
每次這樣做都會使代碼的認知復雜度逐漸增加。問題是開發人員需要能夠編寫循環和分支的代碼,包括使用 if/else 語句的代碼,來創建軟件。這里關鍵的是專注。了解你正在使用什么,并清楚地知道你的代碼是否做得太多。如果是,請考慮重構。了解代碼的認知復雜度可以幫助你確定何時何地需要簡化。
3. 嵌套會很快造成混亂
例如,嵌套代碼(循環嵌套在循環中)難以理解。你嵌套代碼越深,理清頭緒并理解你正在處理的每一部分代碼就需要付出更多努力。
查看你的代碼,看看哪些嵌套組件導致了最大的頭痛。然后,找到另一種編寫代碼的方法。了解每個組件帶來的認知復雜度將幫助你走上正確的道路。
4. 有用的東西不會增加復雜度
存在許多結構可以使代碼更清晰、更容易理解。switch 語句是一種很好的方法,可以幫助消除一系列嵌套的 if 或 if/else 語句,這些語句使代碼變得模糊不清,并且不會增加代碼的認知復雜度。幫助你跳出循環的 continue 或 break 語句也可以幫助你編寫更清晰的代碼,并且同樣不會增加復雜度。這些只是可以幫助降低認知復雜度的不同類型結構中的一部分。
5. 使用正確的工具并編寫干凈代碼
像SonarLint、SonarQube 和 SonarCloud這樣的工具具有內置的認知復雜度測量功能,可以幫助你編寫不僅運行良好,而且易于理解和構建的代碼。它們可以幫助你更好地、更仔細地查看你的代碼,以便你了解你在哪些地方使代碼變得比必要時更復雜。專注于編寫易于理解的代碼,你的團隊和未來的你都會感謝你!
開發人員應該始終專注于編寫干凈代碼- 安全、可靠、可讀和可維護的代碼,為所有使用它的人節省軟件項目中的重大頭痛。有了正確的思維方式和工具,你可以確保你的代碼對軟件質量有幫助,而不是阻礙。