編寫整潔代碼的十大心得,你 Get 了嗎?(代碼整潔之道總結(jié))
編寫了這么多代碼,這十個寫出整潔代碼的心得,你或許需要。
原文鏈
接:https://aster.cloud/2022/12/15/10-tips-for-writing-clean-code/?continueFlag=09893b9b2b388dcce38f0d0199cd963d
聲明:本文為 CSDN 翻譯,未經(jīng)允許,禁止轉(zhuǎn)載。
譯者 | 彎月 責編 | 鄭麗媛
出品 | CSDN(ID:CSDNnews)
整潔的代碼是一種編寫代碼的風格,主要以閱讀代碼的人為中心,以這種方式編寫的代碼不僅易于閱讀,維護起來也很方便。掌握如何編寫整潔代碼是軟件開發(fā)人員的一項基本技能。通常,編程的基本任務(wù)是應用程序能按預期運行,但我們編寫的代碼不僅僅是面向計算機。
編寫整潔的代碼,是要認識到你的受眾不僅僅是計算機,還有真實的人類——牢記這一原則,我們來回顧一下保持代碼整潔的重要性,并深入探討一些技巧和心得,以幫助我們在實踐中編寫出真正整潔的代碼。
什么是整潔的代碼?
整潔代碼指的是清晰、方便理解和維護的代碼。在編寫整潔的代碼時,你需要牢記今后還有其他人會閱讀并維護這段代碼,而你需要幫助他人理解代碼的用途,這樣他們才能進行修改。
遵循代碼整潔之道,可以幫助我們編寫高度模塊化的源代碼,并降低閱讀和測試的難度。將編程與蓋房子做類比,那么整潔代碼就是房子的地基。遵循代碼整潔之道是一項基本技能,在需要重構(gòu)代碼或測試代碼時,我們就能享受整潔的代碼帶來的優(yōu)勢。
代碼整潔之道三原則
為了編寫整潔的代碼,我們需要遵循以下三大核心原則:
1. 選擇正確的工具;
2. 優(yōu)化信噪比;
3. 盡最大努力編寫出不言自明的代碼。
十大心得
1. 遵守命名約定
使用命名約定是一個很好的開端,命名約定不僅可以讓代碼清晰有條理,而且還能讓人立即明白代碼的作用。
遵守命名約定意味著,按照特定的規(guī)則給變量命名。遵守命名約定很麻煩,而且很多人無法就哪個規(guī)則最佳達成一致。所以,我們需要盡量保持簡單,例如在變量名前加上數(shù)據(jù)類型,如下所示:
int iMyInteger = 10;
float fMyFloat = 10.5f;
2. 說明變量范圍
遵循命名約定的下一步是說明變量的范圍。同樣,具體的方式?jīng)]有統(tǒng)一標準,每個人都有自己的方式,但只要在所有代碼中保持一致,就可以清楚地看出什么地方可以使用哪些變量。
常用的一種約定如下:
// 私有變量和保護變量以下劃線開頭
int _iWindowSize = 900;
// 公共變量正常命名
int iWindowSize = 900;
/ 常量全部大寫,并以下劃線連接
int I_WINDOW_SIZE = 900;
3. 說明變量用途
這一點非常簡單,但也最常見,且最容易被忘記。對于查看代碼的其他開發(fā)人員來說,最令人沮喪的事情就是看到一個具有誤導性名稱的變量,或者更糟糕的是,有些變量只用一個字母命名。
下面是一個例子:
int checkNum
{
if(n < max)
{
return -1;
}else{
return 1;
}
}
4. 空白的使用
通常使用空白都有積極的作用,并且一般沒有任何壞處。有時,比如 JavaScript 這樣的語言,源代碼本身的文件大小很重要,所以你希望文件盡可能小,但空白可能會增加幾千字節(jié)。如果條件允許,請在開發(fā)過程中保留所有空白,以確保代碼方便閱讀。然后,使用一個小工具來遍歷代碼,刪除所有空白之后再上傳。
5. 注釋可以救命,至少可以減輕痛苦
在代碼中添加注釋,功德堪比救世主,我們可以通過注釋快速了解某個復雜的函數(shù)在做什么,或理解某些操作的順序。此外,除了解釋代碼本身的用途之外,注釋還可以幫助其他人了解代碼試圖解決的問題,這可以幫助他們提出更好的解決方案。
但請記住,注釋過多有時會導致代碼混亂,從而產(chǎn)生不良影響。
6. 利用自動化節(jié)省時間和空間
編寫涉及復雜技術(shù)的代碼并不意味著可讀性必然會降低。將復雜的代碼分開寫成多行,不僅難以閱讀,而且還會增加出錯的概率。不過編程的偉大之處在于,你可以利用整潔、可重用和巧妙的方式表達復雜的命令。
下面是一個糟糕的、不斷重復的代碼示例:
雖然代碼本身看起來沒什么問題,而且可以正常工作,但我們并不清楚它究竟在干什么。你可以添加一些簡單的注釋。
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
當代碼包含多個首尾相接的循環(huán)時,你需要使用不同的迭代變量。至于應該使用什么一直富有爭議,而且答案很主觀,當循環(huán)一個接一個地出現(xiàn)時,我們應該在循環(huán)外聲明迭代變量,并重用它。這樣,不僅代碼方便閱讀,而且你很清楚字母“i”就是迭代變量,而且它很高效。
下面,我們來看一個例子:
//declare variable initially
int i ;
for(i = 0; i<10; i )
{
//loop stuff
}
for(i = 0; i<200; i )
{
//more loop stuff
}
8. 將所有相似的變量組織到一起
當項目不斷膨脹時,類中的變量也會越來越多。首先,你應該將所有變量的聲明都放到頂部,或者至少應該放在一起,這樣就可以讓瀏覽代碼更容易。
其次,將所有變量的聲明放在一起,然后再按照一種更容易理解的方式排列它們通常會很有幫助。例如,按照某種方式分組。有時,同一個對象可能會有多種類型,我們應該將它們放在一起,然后將無法分類的變量放在一起。
9. 函數(shù)應盡量簡單
冗長的函數(shù)定義很容易導致代碼混亂。我們應該了解一下函數(shù)的實際功能。如果某個函數(shù)完成的功能超出了函數(shù)名包含的意思,就應該將多余的這部分功能拆分出來,編寫一個新的函數(shù)。
10. 保持優(yōu)雅
與函數(shù)問題類似,如果大量函數(shù)都集中在同一個地方,最好創(chuàng)建一個單獨的類來代替這些函數(shù)的功能。
代碼的整潔度是影響代碼編寫、閱讀和維護難度的關(guān)鍵因素。以上我們討論的心得不是具體規(guī)則,你應該將在這些基礎(chǔ)之上,找到自己的風格和方式。
重要的是,保持代碼整潔、清晰且一致。任何使用代碼的人都會感謝你付出的努力,甚至可以從你的代碼中學習到新知識。