2012-04-02 52 views
4

我最近在我的C++代碼庫上運行了CCCC,並且收到了不少紅色標記(可在鏈接中看到一個樣本output of CCCC on a code base (not my code base))。我明白,紅色標記可能是由於一個基本的複雜性或意外的複雜性,但CCCC不區分這兩者。我最擔心的是我的代碼庫中的模塊性度量值「Henry and Kafura's information flow complexity」,它有很多紅色標記。是否有任何工作描述了減少紅色標記數量的工作流程建議或處方?改進軟件度量標準?

回答

0

通過改進代碼來改進度量。這將是最有用和最普遍適用的方法,海事組織。

您要做的最後一件事是通過某種過濾來屏蔽指標。沒有什麼比浪費時間的統計數字更浪費時間了。

明智地使用它們,但不要讓它成爲你的宗教。有幾個紅印


編輯生活,如果你真的想打擊「他們紅旗」,最通用的adiec我能想到的:

  • 使方法小
  • 組參數對象中的參數

當然,這不會治癒孤立連接的模塊,還有什麼可能是錯誤的,但它肯定是一個惡作劇d開始'擴大'/'稀釋'信息的複雜性一般

5

這些紅色標記是預期的,因爲涉及的類。

stringostream都有高扇入,但是沒有扇出。這意味着您正在將數據放入字符串中,或​​將數據發送到ostreams。使用string的16個模塊並非不合理,也不是使用ostream的16個模塊。

您的CDistribution模塊具有適度的扇入和扇出,這意味着多個模塊向其發送數據,並且多個模塊從其接收數據。大概這就是爲什麼它被稱爲CDistributor的原因,因爲它將模塊中的某些內容分發給其他模塊,而無需直接瞭解彼此。大概這是設計。

您可以通過擺脫體系結構並讓模塊直接互相調用來刪除CDistribution的紅色標記!當然,這不是一個嚴肅的建議。您的體系結構看起來很合理,只有CD分佈上有紅色標記表明您已將所有這些依賴關係壓縮到一個明確定義的位置,這是件好事。

至於刪除stringostream的紅色標記,您必須減少對這些類的依賴性,但它們是基礎類。想象一下,全球整數運算符「fan-in」有多大?有些東西只是被大量使用,而這就是你所看到的。

+1

「抑制重用」:|嚴重的是,我不能重視一個工具,結論'std :: string'不可重用,因爲它使用了很多(!) – MSalters 2012-04-02 12:02:27

+0

恕我直言指標不應該被認爲是絕對的,但它們對於比較是有用的。如果到處都是紅色,例如引入CDistribution可能會將紅色移動到一個明確定義的位置。所以你可以通過查看指標來告訴你改進了一些東西。但是靜態指標本身並沒有告訴你,你的程序是「好」還是「壞」。他們只是告訴你有關該計劃的事實,這是由你來解釋。 – 2012-04-02 12:08:20

+0

如果您不知道這是一種積極還是消極的措施,您如何比較4和5?或者更糟糕的是,這種測量有時很好,有時甚至不好 - 像這樣?事實太容易了,因此便宜。洞察力是有價值的,'std :: string'示例顯示這個工具沒有很多。 – MSalters 2012-04-02 12:15:34