編寫整潔程式碼的十大心得,你 Get 了嗎?

編寫了這麼多程式碼,這十個寫出整潔程式碼的心得,你或許需要。

原文連結:https://aster.cloud/2022/12/15/10-tips-for-writing-clean-code/?continueFlag=09893b9b2b388dcce38f0d0199cd963d

聲明:本文為 CSDN 翻譯,未經允許,禁止轉載。

譯者 | 彎月 責編 | 鄭麗媛

整潔的程式碼是一種編寫程式碼的風格,主要以閱讀程式碼的人為中心,以這種方式編寫的程式碼不僅易於閱讀,維護起來也很方便。掌握如何編寫整潔程式碼是軟體開發人員的一項基本技能。通常,程式設計的基本任務是應用程序能按預期運行,但我們編寫的程式碼不僅僅是面向計算機。

編寫整潔的程式碼,是要認識到你的受眾不僅僅是計算機,還有真實的人類——牢記這一原則,我們來回顧一下保持程式碼整潔的重要性,並深入探討一些技巧和心得,以幫助我們在實踐中編寫出真正整潔的程式碼。

什麼是整潔的程式碼?

什麼是整潔的程式碼?

整潔程式碼指的是清晰、方便理解和維護的程式碼。在編寫整潔的程式碼時,你需要牢記今後還有其他人會閱讀並維護這段程式碼,而你需要幫助他人理解程式碼的用途,這樣他們才能進行修改。

遵循程式碼整潔之道,可以幫助我們編寫高度模組化的源程式碼,並降低閱讀和測試的難度。將程式設計與蓋房子做類比,那麼整潔程式碼就是房子的地基。遵循程式碼整潔之道是一項基本技能,在需要重構程式碼或測試程式碼時,我們就能享受整潔的程式碼帶來的優勢。

程式碼整潔之道三原則

程式碼整潔之道三原則

為了編寫整潔的程式碼,我們需要遵循以下三大核心原則:

1. 選擇正確的工具;

2. 最佳化訊雜比;

3. 盡最大努力編寫出不言自明的程式碼。

十大心得

十大心得

1. 遵守命名約定

使用命名約定是一個很好的開端,命名約定不僅可以讓程式碼清晰有條理,而且還能讓人立即明白程式碼的作用。

遵守命名約定意味著,按照特定的規則給變數命名。遵守命名約定很麻煩,而且很多人無法就哪個規則最佳達成一致。所以,我們需要儘量保持簡單,例如在變數名前加上資料類型,如下所示:

int iMyInteger = 10;float fMyFloat = 10.5f;

2. 說明變數範圍

遵循命名約定的下一步是說明變數的範圍。同樣,具體的方式沒有統一標準,每個人都有自己的方式,但只要在所有程式碼中保持一致,就可以清楚地看出什麼地方可以使用哪些變數。

常用的一種約定如下:

// 私有變數和保護變數以下劃線開頭int _iWindowSize = 900;// 公共變數正常命名int iWindowSize = 900;/ 常量全部大寫,並以下劃線連接int I_WINDOW_SIZE = 900;

3. 說明變數用途

這一點非常簡單,但也最常見,且最容易被忘記。對於查看程式碼的其他開發人員來說,最令人沮喪的事情就是看到一個具有誤導性名稱的變數,或者更糟糕的是,有些變數只用一個字母命名。

下面是一個例子:

int checkNum(){if(n < max){return -1;}else{return 1;}}

4. 空白的使用

通常使用空白都有積極的作用,並且一般沒有任何壞處。有時,比如 JavaScript 這樣的語言,源程式碼本身的檔案大小很重要,所以你希望檔案儘可能小,但空白可能會增加幾千位元組。如果條件允許,請在開發過程中保留所有空白,以確保程式碼方便閱讀。然後,使用一個小工具來遍歷程式碼,刪除所有空白之後再上傳。

5. 註釋可以救命,至少可以減輕痛苦

在程式碼中添加註釋,功德堪比救世主,我們可以通過註釋快速了解某個複雜的函數在做什麼,或理解某些操作的順序。此外,除了解釋程式碼本身的用途之外,註釋還可以幫助其他人了解程式碼試圖解決的問題,這可以幫助他們提出更好的解決方案。

但請記住,註釋過多有時會導致程式碼混亂,從而產生不良影響。

6. 利用自動化節省時間和空間

編寫涉及複雜技術的程式碼並不意味著可讀性必然會降低。將複雜的程式碼分開寫成多行,不僅難以閱讀,而且還會增加出錯的概率。不過程式設計的偉大之處在於,你可以利用整潔、可重用和巧妙的方式表達複雜的命令。

下面是一個糟糕的、不斷重複的程式碼示例:

雖然程式碼本身看起來沒什麼問題,而且可以正常工作,但我們並不清楚它究竟在幹什麼。你可以添加一些簡單的註釋。

box1.x = 10;box1.y = 20;box2.x = 30;box2.y = 20;box3.x = 50;box3.y = 20;box4.x = 70;box4.y = 20;

下面是修改後的整潔的程式碼:

boxArray = [box1, box2, box3, box4];for(int i = 0; i < sizeOf(boxArray); i++){boxArray[i].x = 10 + i * 20;boxArray[i].y = 20;}

7. 強大的字母 i

當程式碼包含多個首尾相接的循環時,你需要使用不同的迭代變數。至於應該使用什麼一直富有爭議,而且答案很主觀,當循環一個接一個地出現時,我們應該在循環外聲明迭代變數,並重用它。這樣,不僅程式碼方便閱讀,而且你很清楚字母「i」就是迭代變數,而且它很高效。

下面,我們來看一個例子:

//declare variable initiallyint i ;for(i = 0; i<10; i++){//loop stuff}for(i = 0; i<200; i++){//more loop stuff}

8. 將所有相似的變數組織到一起

當項目不斷膨脹時,類中的變數也會越來越多。首先,你應該將所有變數的聲明都放到頂部,或者至少應該放在一起,這樣就可以讓瀏覽程式碼更容易。

其次,將所有變數的聲明放在一起,然後再按照一種更容易理解的方式排列它們通常會很有幫助。例如,按照某種方式分組。有時,同一個對象可能會有多種類型,我們應該將它們放在一起,然後將無法分類的變數放在一起。

9. 函數應儘量簡單

冗長的函數定義很容易導致程式碼混亂。我們應該了解一下函數的實際功能。如果某個函數完成的功能超出了函數名包含的意思,就應該將多餘的這部分功能拆分出來,編寫一個新的函數。

10. 保持優雅

與函數問題類似,如果大量函數都集中在同一個地方,最好創建一個單獨的類來代替這些函數的功能。

程式碼的整潔度是影響程式碼編寫、閱讀和維護難度的關鍵因素。以上我們討論的心得不是具體規則,你應該將在這些基礎之上,找到自己的風格和方式。

重要的是,保持程式碼整潔、清晰且一致。任何使用程式碼的人都會感謝你付出的努力,甚至可以從你的程式碼中學習到新知識。

相關文章

Linux管道到底能有多快?

Linux管道到底能有多快?

【CSDN 編者按】本文作者通過一個示例程序,演示了通過Linux管道讀寫資料的性能最佳化過程,使吞吐量從最初的 3.5GiB/s,提高到最...

Docker 映象詳細講解

Docker 映象詳細講解

作者 | 微楓Micromaple 來源 | CSDN部落格 前言 大家好,本文是對 Docker 映象的詳細講解,講解了如何安裝 Dock...

為什麼泛型會使你的程序變慢?

為什麼泛型會使你的程序變慢?

作者 | 董澤潤 責編 | 張紅月 Go 1.18 發佈很久了,人們期待己久的第一個版本終於可以投入生產環境使用。泛型是經常被提到的功能,在...

緩衝區溢出攻擊與堆疊保護

緩衝區溢出攻擊與堆疊保護

作者 | 陸小風 來源 | 碼農的荒島求生 在上一篇文章《進程切換的本質是什麼?》中舉了一個示例,也就是這段程式碼: #include &l...

在 MacOS 上運行 Docker 太慢!

在 MacOS 上運行 Docker 太慢!

你是否也覺得,MacOS 中的 Docker 非常慢?本文作者想出了解決辦法,不妨來試試看。 原文連結:https://www.paolom...