2009-01-06 40 views
1

當我產生一個依賴圖時,我應該尋找什麼東西?在依賴圖中容易發現哪些問題?

,或者換一種說法,是有什麼好看的圖形VS壞的一個特點?

編輯:這裏的上下文是我第一次看看我在NDepend中的程序集。

回答

1

你可以發現的最大問題是絕對依賴週期。 NDepend工具提出了一個交互式dependency Matrix和一個dependency Graph,這將有助於發現dependency cyles聲明:我的工具的開發者之一

enter image description here

注意,依賴矩陣是遠遠超過圖表察覺週期調整。因爲一個循環避免矩陣爲三角形。

問題的其他範圍是相對於你的應用程序結構:例如,它是正常的用戶界面直接使用DB?或者更糟,數據庫依賴於UI?

你可以寫code rules over LINQ queries (CQLinq)檢查禁止的依賴關係。下面的代碼規則檢查該UI的類型不應該直接使用DB類型:

// <Name>UI layer shouldn't use directly DB types</Name> 
warnif count > 0 

// UI layer is made of types in namespaces using a UI framework 
let uiTypes = Application.Namespaces.UsingAny(Assemblies.WithNameIn("PresentationFramework", "System.Windows", "System.Windows.Forms", "System.Web")).ChildTypes() 

// You can easily customize this line to define what are DB types. 
let dbTypes = ThirdParty.Assemblies.WithNameIn("System.Data", "EntityFramework", "NHibernate").ChildTypes() 
       // Ideally even DataSet and associated, usage should be forbidden from UI layer: 
       // http://stackoverflow.com/questions/1708690/is-list-better-than-dataset-for-ui-layer-in-asp-net 
       .Except(ThirdParty.Types.WithNameIn("DataSet", "DataTable", "DataRow")) 

from uiType in uiTypes.UsingAny(dbTypes) 
let dbTypesUsed = dbTypes.Intersect(uiType.TypesUsed) 
select new { uiType, dbTypesUsed } 
1

是什麼依賴關係圖?班?存儲過程?

週期是壞...

0

如果更改一個依賴意味着你需要改變了一大堆別人,這是不好的。
但是,有些環境可以幫助。

0

我不知道什麼是NDepend的節目,但假象,往往會陷入很多代碼段(特別是不相關的部分)將趨於惡劣(恕我直言)我認爲這是「癌症代碼」。

0

NFJS會議上的演講者向我們展示了一些依賴關係圖... 他指出的一個問題是尋找與您的代碼庫的不同功能部件之間的關係。這些可能會破壞封裝。

而且我想看看每個部分的一般複雜..那些與行遍是犯罪嫌疑人。