溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘

發(fā)布時(shí)間:2021-10-14 10:41:52 來(lái)源:億速云 閱讀:112 作者:柒染 欄目:編程語(yǔ)言

怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

1. 什么樣的代碼讓你想罵娘?

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

怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘

或者是這樣的密密麻麻,舍不得多一行免費(fèi)空格

怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘

又或者是那種又臭又長(zhǎng)的代碼呢?

代碼除了用來(lái)運(yùn)行外,還有很重要的就是閱讀,給自己閱讀,或者給他人閱讀,如果幾個(gè)月后你自己都看不下去自己以前寫(xiě)的代碼,呵呵…

2. 我們需要漂亮的代碼

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

漂亮的代碼能夠增強(qiáng)可讀性,同時(shí)也減弱了出錯(cuò)的概率。最關(guān)鍵的一點(diǎn),漂亮的代碼不會(huì)被罵娘。

具體來(lái)說(shuō),漂亮的代碼通常:
1. 代碼縮進(jìn)
2. 分支語(yǔ)句嵌套的層數(shù)較少
3. 每個(gè)函數(shù)的代碼行數(shù)不會(huì)太多
4. 變量的命名有統(tǒng)一的風(fēng)格
5. 文件命名有統(tǒng)一的風(fēng)格
6. 注釋有統(tǒng)一的風(fēng)格

如此等等,這些都是實(shí)踐中總結(jié)出來(lái)的結(jié)晶。也許你也注意到了,這些東西不就是編程規(guī)范嗎?確實(shí)是如此。為了寫(xiě)出漂亮的代碼,很多公司都會(huì)有自己的編程規(guī)范。
某些公司,還會(huì)對(duì)編程規(guī)范進(jìn)行考試,足見(jiàn)其重視程度。

3. 善用佳軟,助力代碼變身

3.1 AStyle :一鍵代碼格式化

作為一個(gè)狂放不羈的男子,我寫(xiě)代碼從來(lái)不回頭,怎么可能管你什么代碼風(fēng)格。尤其個(gè)人偏愛(ài)Linux,代碼風(fēng)格也是Linux的。對(duì)于一些非Linux代碼風(fēng)格的項(xiàng)目來(lái)說(shuō),在寫(xiě)完代碼后,難道讓我對(duì)著編程規(guī)范將函數(shù)內(nèi)的大括號(hào)一個(gè)一個(gè)單獨(dú)一行?
怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘

我需要一鍵格式化,就讓我的代碼風(fēng)格由Linux變成GNU風(fēng)格,變成JAVA風(fēng)格。在我不高興的時(shí)候,還能瞬間變回來(lái)。

我需要的就是 AStyle –支持”魔法換膚”,一鍵變換代碼風(fēng)格,堪稱(chēng)編碼界的美圖秀秀。

AStyle(Artistic style),可以集成到Eclipse,VS,SourceInsight等工具中,對(duì)代碼進(jìn)行格式化、規(guī)范風(fēng)格。AStyle默認(rèn)支持Linux,ANSI,GNU,JAVA等風(fēng)格,也支持自定義風(fēng)格。
當(dāng)不同編碼風(fēng)格的程序員為一個(gè)項(xiàng)目共同貢獻(xiàn)代碼時(shí),特別項(xiàng)目周期緊張時(shí)期,經(jīng)常會(huì)出現(xiàn)各式各樣的代碼導(dǎo)致極低的可讀性和可維護(hù)性。這個(gè)時(shí)候AStyle就能很好的解決這個(gè)問(wèn)題。
對(duì)于我這樣的懶人來(lái)說(shuō),不用去管代碼縮進(jìn),將精力花在更重要的地方,就是一種減負(fù)。

3.2 SourceMonitor:識(shí)別壞味道

解決了代碼風(fēng)格后,是否就可以算做漂亮的代碼了呢?
要知道再漂亮的衣服穿到胖子身上,也漂亮不到哪去(阿門(mén),原諒我吧)。對(duì)于代碼來(lái)說(shuō),符合代碼風(fēng)格只是第一步,漂亮的代碼還要易于理解。讓人容易理解的話(huà),單個(gè)函數(shù)的代碼行就不能太長(zhǎng),嵌套層數(shù)就不能太多,分支條件判斷不能太多。這些工作不是代碼風(fēng)格能解決的。我們需要能夠自動(dòng)檢查代碼質(zhì)量的工具-SourceMonitor。

SourceMonitor是一款代碼質(zhì)量檢查的軟件。能夠檢查文件中函數(shù)的個(gè)數(shù),每個(gè)函數(shù)的代碼行數(shù),注釋比例,函數(shù)的調(diào)用深度,圈復(fù)雜度等。
其中需要最關(guān)鍵的是每個(gè)函數(shù)圈復(fù)雜度和每個(gè)函數(shù)的代碼行數(shù)。圈復(fù)雜度是指函數(shù)中可獨(dú)立執(zhí)行的路徑,因此函數(shù)中每出現(xiàn)一次if/else/while,switch/case/break等,圈復(fù)雜度就加1.圈復(fù)雜度越高,說(shuō)明函數(shù)中可執(zhí)行的路徑越多,也就越復(fù)雜。超過(guò)一定值如(15或者10)以后就要考慮能否將函數(shù)重構(gòu)了。此外一個(gè)函數(shù)的代碼行數(shù)如果太長(zhǎng),不能一屏顯示的話(huà),不容易讓人記住和理解,也需要對(duì)該函數(shù)進(jìn)行提煉。

3.3 Eclipse的半自動(dòng)重構(gòu)

利用SourceMonitor找出需要重構(gòu)或提煉的函數(shù)后,難道又要我手工重構(gòu)嗎,有沒(méi)有重構(gòu)的工具呢?全自動(dòng)的目前還沒(méi)見(jiàn)過(guò),如果有同學(xué)見(jiàn)到,請(qǐng)留言。相比來(lái)說(shuō),半自動(dòng)的重構(gòu)工具還是比較多的,Eclipse中就有一個(gè)重構(gòu)菜單,提供函數(shù)提煉,變量或方法重命名等不少基礎(chǔ)的重構(gòu)功能。
Eclipse的半自動(dòng)的重構(gòu)能減少人工重構(gòu)的錯(cuò)誤,降低開(kāi)發(fā)人員所耗費(fèi)的精力,這也是為什么一個(gè)我作為C/C++程序員越來(lái)越喜歡Eclipse的原因。

回到最開(kāi)始的話(huà)題中,我覺(jué)得想罵娘的代碼無(wú)非有兩種,一種是難用,一種是難看。

代碼難用,這個(gè)問(wèn)題比較深?yuàn)W,本文沒(méi)有討論。
代碼難看,可以通過(guò)格式化使程序變得美觀(guān),通過(guò)SourceMonitor識(shí)別代碼中的壞味道,利用Eclipse半自動(dòng)重構(gòu)等方式使程序變得已讀。
我相信,通過(guò)這樣處理后的代碼至少看上去是不會(huì)再被罵了。

關(guān)于怎么善用SourceMonitor+Astyle讓代碼維護(hù)者不再罵娘問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI