日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java复杂性_如何衡量C或Java文件的复杂性?

發(fā)布時(shí)間:2025/3/20 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java复杂性_如何衡量C或Java文件的复杂性? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我想開始測(cè)量Michael Feathers所稱的代碼紊亂,即

churn vs. complexity.

為此,我需要測(cè)量C或Java文件的復(fù)雜性.所以我發(fā)現(xiàn)了一些測(cè)量圈復(fù)雜度(CC)的工具.它們各自在功能或方法級(jí)別上很好地測(cè)量CC.但是,我需要一個(gè)文件級(jí)別的度量標(biāo)準(zhǔn),并且它們?cè)谀抢镒龅貌缓?一個(gè)工具只返回文件中所有方法復(fù)雜度的平均值,另一個(gè)工具將整個(gè)文件視為一個(gè)巨大的方法,即它計(jì)算整個(gè)文件中的所有決策點(diǎn).

所以我做了一些研究,發(fā)現(xiàn)McCabe僅在模塊方面定義CC – 并且它們將模塊定義為函數(shù) – 而不是文件(參見this presentation的幻燈片20和30).而且我認(rèn)為這是有道理的.

所以現(xiàn)在我只想弄清楚如何表示文件的復(fù)雜性.我的想法是我應(yīng)該使用該文件的最大方法CC.

有關(guān)該方法或任何其他建議的任何想法?

謝謝!

最佳答案 幾年前我有同樣的問題.我用以下方式回答了它并且它完美地起作用并且對(duì)我有用:

最小化復(fù)雜性的目的是提高可維護(hù)性.循環(huán)復(fù)雜性是邏輯復(fù)雜性的指標(biāo),你是對(duì)的 – 它適用于最小的“單位”,即功能.可以推導(dǎo)出“總結(jié)”指標(biāo),例如總計(jì)/最大/最小/等,但是當(dāng)涉及圈復(fù)雜度時(shí),它們很少顯示有用的東西.我嘗試使用’summary’指標(biāo)來比較2個(gè)代碼庫,但得出的結(jié)論是,只有圈復(fù)雜度的分布圖才真正有用.

那么,什么可以用于表示更大單位/抽象級(jí)別(如文件/組件/子系統(tǒng))的可維護(hù)性級(jí)別?我發(fā)現(xiàn)第一個(gè)指標(biāo)是代碼行中單位的大小.如果限制文件的大小(如1000行)并限制文件中每個(gè)函數(shù)的圈復(fù)雜度,則會(huì)有相對(duì)“簡(jiǎn)單”的文件,因?yàn)樗昂苄 辈⑶抑话昂?jiǎn)單”函數(shù).您可以包含或排除注釋/空白行或僅計(jì)算語句或僅計(jì)算可執(zhí)行行…

但是,我的結(jié)論是,在這個(gè)特定的應(yīng)用程序中并不重要.只是限制一些“大小”指標(biāo),它在大多數(shù)情況下都可以達(dá)到目的.稍后您可以考慮限制每個(gè)組件/子系統(tǒng)的代碼行總數(shù).它將具有相同的效果 – 組件“簡(jiǎn)單”,因?yàn)樗靶 睌?shù)量的“簡(jiǎn)單”文件.

你提到的帖子非常好.它可以擴(kuò)展到更廣泛的度量,通常被稱為“可維護(hù)性指數(shù)”.如果函數(shù)很復(fù)雜,文件很大并且頻繁更改,測(cè)試覆蓋率很小等等(在此處添加您認(rèn)為定義的可維護(hù)性),索引非常高.我知道,這是找到重新分解熱點(diǎn)的最好方法……

免責(zé)聲明:我正在尋找執(zhí)行用例場(chǎng)景的Metrix++工具,我在上面解釋過.

總結(jié)

以上是生活随笔為你收集整理的java复杂性_如何衡量C或Java文件的复杂性?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。