首頁 > IT教程 > 正文

代碼整潔之道的一些總結(一)

2020-02-13 21:31:01 來源:金橙教程網 作者:admin8 瀏覽:50次 「手機版」

代碼整潔之道

細節之中自有天地,整潔成就卓越代碼。

 只要我們寫的代碼有人讀,那么我們就有必要將代碼整理干凈,看起來清清爽爽。也
 許你是一個初學者,像鮑勃大叔說的低水平編碼者為代碼猴子,上躥下跳,自以為領
 略了編程的真諦,可惜,當我們抓著幾個酸桃子,得意洋洋地坐到樹枝上,卻對自己
 的混亂熟視無睹。那堆“可以運行”的亂麻程序,就在我們的眼皮底下慢慢腐壞。

一、整潔代碼

首先,代碼是機器可以執行的細節程度,我們永遠無法拋棄必要的精確性——所以代碼永存。而好的代碼的重要性不言而喻,糟糕的代碼猶如密布的灌木、瀑布暗藏的沼澤,混亂,爛,導致團隊生產力持續下降,甚至嚴重到毀掉一家公司。花時間保持代碼整潔不但有關效率,還有關生存。那么,我怎么才能寫出整潔的代碼呢?

我喜歡優雅和高效的代碼。代碼邏輯應當直接了當,叫缺陷難以隱藏;盡量減少依賴關系,使之便于維護;依據某種分層戰略完善錯誤處理代碼;性能調至最優,省得引誘別人做沒規矩的優化,搞出一堆混亂來。整潔的代碼只做好一件事。–Bjarne Stroustrup,C++語言發明者,C++ Programming Language(中譯版《C++程序設計語言》)一書作者

借用美國童子軍一條簡單的軍規,應用到我們的專業領域:讓營地比你來時更干凈。

二、有意義的命名

  1. 名副其實

    問題不在于代碼的簡潔度,而是在于代碼的模糊度:即上下文在代碼中未被明確體現的程度。

int d; //消逝的時間,以日計
名稱d什么也沒說明。它沒有引起對時間消逝的感覺,更別說以日計了。我們應該選擇了
計量對象和計量單位的名稱:
int elapsedTimeInDays;
int daysSinceCreation;
  1. 避免誤導

    避免留下掩藏代碼本意的錯誤線索。提防使用不同之處較小的名稱。

    真正可怕的例子,用小寫字母l和大寫字母O作為變量名,看起來是“壹”和“零”。

  2. 做有意義的區分
犯錯的代碼例子:
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
程序員怎么能知道調用哪個函數呢?

要區分名稱,就要以讀者能鑒別不同之處的方式來區分。

  1. 使用讀得出來的名稱

    例如函數名genymdhms(生產日期,年、月、日、時、分、秒),傻乎乎的自造詞,而非恰當的英語詞。改成generationTimestamp生產時間戳可要好多了。

  2. 使用可搜索的名稱

    找到MAX_CLASSES_PER_STUDENT很容易,但是找到數字7就麻煩了。長名稱勝過短名稱,搜得到的名稱勝過自造編碼代寫的名稱。

  3. 避免使用編碼

    把類型或作用域編輯進名稱里,徒然增加了解碼的負擔。匈牙利語標記法,成員前綴,m_前綴,可以使用高亮或顏色標出成員變量。如果接口和實現必須選一個編碼,寧肯選擇實現。

  4. 避免思維映射

    不應當讓讀者在腦中把你的名稱翻譯成為他們熟知的名稱,明確才是王道。

  5. 類名

    類名和對象名應該是名詞或名詞短語,類名不應當是動詞。

    方法名應當是動詞或動詞短語。

  6. 別扮可愛

    不要用俚語,太耍寶的,幽默的來命名。言到意到,意到言到。

  7. 每個概念對應一個詞

    給每個抽象概念選一個詞,并且一以貫之。例如,fetch,retrieve,和get來給在多個類中的同種方法命名,怎么能記住呢?

  8. 別用雙關語

    避免將同一單詞用于不同目的。

  9. 使用解決方案領域名稱

    只有程序員才會讀你的代碼,所以盡量用專業是計算機科學術語、算法名、模式名、數學術語。

  10. 使用源自所涉問題領域的名稱

    如果不能使用解決方案領域的名稱,那就采用與問題領域更貼近的代碼名字。

  11. 添加有意義的語境

    你需要有良好命名的類,函數或命名空間來放置名稱,給讀者提供語境。給名稱添加前綴是最后一招了。設想你有名為firstName、lastName、street、houseNumber、city、state和zipcode的變量,擱到一塊就很快推斷出是一個地址,如果把state單獨放在一個地方,你還能推斷出來嗎?可以addrFirstName、addrLastName來提供語境。

  12. 不要添加沒用的語境

    只要名稱足夠清楚,就要比長名稱好。MAC地址、端口地址和web地址相區別,考慮用PostalAddress、MAC和URI。

  13. 最后的話

    試試上面的規則,看看代碼的可讀性是否有所提高,如果你是在維護別人的代碼,使用重構工具來解決問題。效果立竿見影,而且會持續下去。

相關閱讀

0x80070643,教您如何解決0x80070643錯誤代碼

在操作系統中由用戶無法安裝軟件的現象,彈出錯誤代碼:0x80070643 。用戶遇到無法安裝軟件的現象非常的著急,但是又不知道解決方法。

藍屏代碼0x0000007f如何解決

0x0000007f是一種常見的藍屏代碼,不同的代碼問題我們需要使用不同的解決方法,0x0000007f問題一般是硬件設備遇到問題。接下來,我們就

RON 算法及代碼筆記

論文:RON: Reverse Connection with Objectness Prior Networks for Object Detection 論文鏈接:https://arxiv.org/abs/1707.01691

200行代碼實現紅黑樹+原理介紹(全網最詳細)

首先手擼紅黑樹,需要明白紅黑樹是什么東西?

錯誤代碼678,教您寬帶錯誤代碼678如何解決

很多家庭朋友都是使用撥號上網,但有得時候會發現撥號上網不成功,往往會提示各種寬帶連接錯誤,連接不上網絡。連接網絡的時候出現了錯

(責任編輯:jjjccc)

關鍵詞:代碼,整潔

福彩3d字谜画谜藏机图