天天看點

善用SourceMonitor+Astyle,讓代碼維護者不再罵娘1. 什麼樣的代碼讓你想罵娘?2. 我們需要漂亮的代碼3. 善用佳軟,助力代碼變身

什麼樣的代碼最想讓你罵娘,是這樣的,代碼層層嵌套

善用SourceMonitor+Astyle,讓代碼維護者不再罵娘1. 什麼樣的代碼讓你想罵娘?2. 我們需要漂亮的代碼3. 善用佳軟,助力代碼變身

或者是這樣的密密麻麻,舍不得多一行免費空格

善用SourceMonitor+Astyle,讓代碼維護者不再罵娘1. 什麼樣的代碼讓你想罵娘?2. 我們需要漂亮的代碼3. 善用佳軟,助力代碼變身

又或者是那種又臭又長的代碼呢?

代碼除了用來運作外,還有很重要的就是閱讀,給自己閱讀,或者給他人閱讀,如果幾個月後你自己都看不下去自己以前寫的代碼,呵呵…

愛美之心,人皆有之。漂亮的代碼,也是我們程式猿的追求,它不僅能夠完成要求的功能,而且還要整齊,有條理,易于了解。

漂亮的代碼能夠增強可讀性,同時也減弱了出錯的機率。最關鍵的一點,漂亮的代碼不會被罵娘。

具體來說,漂亮的代碼通常:

1. 代碼縮進

2. 分支語句嵌套的層數較少

3. 每個函數的代碼行數不會太多

4. 變量的命名有統一的風格

5. 檔案命名有統一的風格

6. 注釋有統一的風格

如此等等,這些都是實踐中總結出來的結晶。也許你也注意到了,這些東西不就是程式設計規範嗎?确實是如此。為了寫出漂亮的代碼,很多公司都會有自己的程式設計規範。

某些公司,還會對程式設計規範進行考試,足見其重視程度。

作為一個狂放不羁的男子,我寫代碼從來不回頭,怎麼可能管你什麼代碼風格。尤其個人偏愛linux,代碼風格也是linux的。對于一些非linux代碼風格的項目來說,在寫完代碼後,難道讓我對着程式設計規範将函數内的大括号一個一個單獨一行?

善用SourceMonitor+Astyle,讓代碼維護者不再罵娘1. 什麼樣的代碼讓你想罵娘?2. 我們需要漂亮的代碼3. 善用佳軟,助力代碼變身

我需要一鍵格式化,就讓我的代碼風格由linux變成gnu風格,變成java風格。在我不高興的時候,還能瞬間變回來。

我需要的就是 astyle –支援”魔法換膚”,一鍵變換代碼風格,堪稱編碼界的美圖秀秀。

astyle(artistic style),可以內建到eclipse,vs,sourceinsight等工具中,對代碼進行格式化、規範風格。astyle預設支援linux,ansi,gnu,java等風格,也支援自定義風格。

當不同編碼風格的程式員為一個項目共同貢獻代碼時,特别項目周期緊張時期,經常會出現各式各樣的代碼導緻極低的可讀性和可維護性。這個時候astyle就能很好的解決這個問題。

對于我這樣的懶人來說,不用去管代碼縮進,将精力花在更重要的地方,就是一種減負。

解決了代碼風格後,是否就可以算做漂亮的代碼了呢?

要知道再漂亮的衣服穿到胖子身上,也漂亮不到哪去(阿門,原諒我吧)。對于代碼來說,符合代碼風格隻是第一步,漂亮的代碼還要易于了解。讓人容易了解的話,單個函數的代碼行就不能太長,嵌套層數就不能太多,分支條件判斷不能太多。這些工作不是代碼風格能解決的。我們需要能夠自動檢查代碼品質的工具-sourcemonitor。

sourcemonitor是一款代碼品質檢查的軟體。能夠檢查檔案中函數的個數,每個函數的代碼行數,注釋比例,函數的調用深度,圈複雜度等。

其中需要最關鍵的是每個函數圈複雜度和每個函數的代碼行數。圈複雜度是指函數中可獨立執行的路徑,是以函數中每出現一次if/else/while,switch/case/break等,圈複雜度就加1.圈複雜度越高,說明函數中可執行的路徑越多,也就越複雜。超過一定值如(15或者10)以後就要考慮能否将函數重構了。此外一個函數的代碼行數如果太長,不能一屏顯示的話,不容易讓人記住和了解,也需要對該函數進行提煉。

利用sourcemonitor找出需要重構或提煉的函數後,難道又要我手工重構嗎,有沒有重構的工具呢?全自動的目前還沒見過,如果有同學見到,請留言。相比來說,半自動的重構工具還是比較多的,eclipse中就有一個重構菜單,提供函數提煉,變量或方法重命名等不少基礎的重構功能。

eclipse的半自動的重構能減少人工重構的錯誤,降低開發人員所耗費的精力,這也是為什麼一個我作為c/c++程式員越來越喜歡eclipse的原因。

回到最開始的話題中,我覺得想罵娘的代碼無非有兩種,一種是難用,一種是難看。

代碼難用,這個問題比較深奧,本文沒有讨論。

代碼難看,可以通過格式化使程式變得美觀,通過sourcemonitor識别代碼中的壞味道,利用eclipse半自動重構等方式使程式變得已讀。

我相信,通過這樣處理後的代碼至少看上去是不會再被罵了。