使用 Visual Studio 的“代碼度量值”來(lái)改進(jìn)代碼質(zhì)量
代碼度量是一組軟件度量值,使開(kāi)發(fā)人員可以更好地了解他們正在開(kāi)發(fā)的代碼。 利用代碼度量,開(kāi)發(fā)人員可以了解哪些類型和/或方法應(yīng)該返工或進(jìn)行更徹底的測(cè)試。 開(kāi)發(fā)團(tuán)隊(duì)可以識(shí)別潛在的風(fēng)險(xiǎn)、了解項(xiàng)目的當(dāng)前狀態(tài),并跟蹤軟件開(kāi)發(fā)的進(jìn)度。
1 軟件度量值指標(biāo)
1.1 可維護(hù)性指數(shù)
表示源代碼的可維護(hù)性,數(shù)值越高可維護(hù)性越好。該值介于0到100之間。綠色評(píng)級(jí)在20到100之間,表明該代碼具有高度的可維護(hù)性;黃色評(píng)級(jí)在10到19之間,表示該代碼適度可維護(hù);紅色評(píng)級(jí)在0至9之間,表示低可維護(hù)性。
1.2 圈復(fù)雜度
它是通過(guò)計(jì)算程序流中不同代碼路徑的數(shù)量來(lái)創(chuàng)建的,用來(lái)表示一個(gè)程序的復(fù)雜性。具有復(fù)雜控制流的程序需要更多的測(cè)試才能獲得良好的代碼覆蓋率,并且不易維護(hù)。
以下兩種情況會(huì)在計(jì)算圈復(fù)雜度時(shí)加1:
分支(if、while、do)
switch中的case語(yǔ)句
例如:
//圈復(fù)雜度1 public void Method() { Console.WriteLine("Hello World!"); } //圈復(fù)雜度3 public void Method(bool condition1, bool condition2) { if (condition1 || condition2) { Console.WriteLine("Hello World!"); } } //圈復(fù)雜度8 public void Method(DayOfWeek day) { switch (day) { case DayOfWeek.Monday: Console.WriteLine("Today is Monday!"); break; case DayOfWeek.Tuesday: Console.WriteLine("Today is Tuesday!"); break; case DayOfWeek.Wednesday: Console.WriteLine("Today is Wednesday!"); break; case DayOfWeek.Thursday: Console.WriteLine("Today is Thursday!"); break; case DayOfWeek.Friday: Console.WriteLine("Today is Friday!"); break; case DayOfWeek.Saturday: Console.WriteLine("Today is Saturday!"); break; case DayOfWeek.Sunday: Console.WriteLine("Today is Sunday!"); break; } }
1.3 繼承深度
計(jì)算在繼承層次結(jié)構(gòu)中的繼承深度,繼承樹(shù)中層次結(jié)構(gòu)越深,類的開(kāi)發(fā)、測(cè)試和維護(hù)就越復(fù)雜,因?yàn)閷哟谓Y(jié)構(gòu)越深,理解特定方法和字段的定義和(或)重新定義的難度也就越大。
1.4 類耦合度
類耦合是一個(gè)類是如何與另一個(gè)類連接或依賴的度量。好的做法是總是實(shí)現(xiàn)較少的依賴類或低級(jí)耦合。
1.5 代碼行數(shù)
表示代碼行數(shù),計(jì)數(shù)基于IL代碼,因此不是源代碼文件中的確切行數(shù)。一個(gè)非常高的計(jì)數(shù)可能表明一種類型或方法試圖做太多的工作,應(yīng)該分開(kāi)。它還可能表明類型或方法可能難以維護(hù)。
2 計(jì)算代碼度量值
Step 01 運(yùn)行“計(jì)算代碼度量值”
Step 02 查看“代碼度量值結(jié)果”
Step 03 使用“代碼度量值結(jié)果”
篩選:
導(dǎo)出:
列管理:
計(jì)算代碼度量值:
總結(jié)
以上所述是小編給大家介紹的通過(guò) Visual Studio 的“代碼度量值”來(lái)改進(jìn)代碼質(zhì)量,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
asp.net5中的用戶認(rèn)證與授權(quán)(1)
Visual Studio 2015 Preview 除了給我們帶了了C# 6.0的新語(yǔ)法、跨移動(dòng)的開(kāi)發(fā)以外,還給我們帶來(lái)了ASP.NET5(也就是之前被稱作下一代ASP.NET的ASP.NET vNext)。本文給大家介紹asp.net5中的用戶認(rèn)證與授權(quán)(1),需要的朋友可以參考下2015-10-10使用ASP.NET MVC 4 Async Action+jQuery實(shí)現(xiàn)消息通知機(jī)制的實(shí)現(xiàn)代碼
這兩天在使用Asp.net MVC 4開(kāi)發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過(guò)AJAX長(zhǎng)連接請(qǐng)求MVC中的ACTION2013-02-02ASP.NET MVC實(shí)現(xiàn)批量文件上傳
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC實(shí)現(xiàn)批量文件上傳,簡(jiǎn)單介紹單文件上傳的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09ASP與ASP.NET互通COOKIES的一點(diǎn)經(jīng)驗(yàn)
ASP與ASP.NET互通COOKIES的一點(diǎn)經(jīng)驗(yàn)...2006-09-09asp.net實(shí)現(xiàn)根據(jù)城市獲取天氣預(yù)報(bào)的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)根據(jù)城市獲取天氣預(yù)報(bào)的方法,涉及asp.net調(diào)用新浪接口獲取天氣預(yù)報(bào)信息的實(shí)現(xiàn)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-12-12.NET讀寫Excel工具Spire.Xls使用 對(duì)數(shù)據(jù)操作與控制(4)
這篇文章主要為大家詳細(xì)介紹了.NET讀寫Excel工具Spire.Xls使用,對(duì)數(shù)據(jù)操作與控制的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼
這篇文章主要介紹了ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02datagrid行內(nèi)按鈕(更新/刪除等)操作實(shí)現(xiàn)代碼
datagrid控件想必大家很是熟悉,本文將介紹下datagrid行內(nèi)按鈕的操作更新/刪除等等,感興趣的你可不要錯(cuò)過(guò)了哈,希望本文知識(shí)點(diǎn)可以幫助到你2013-02-02