我在公司中遇到了一個奇怪的解決方案結構 - 應用程序的不同層被組織在文件夾中(而不是在項目中)。爲什麼要將項目添加到解決方案而不是文件夾?
例如,在名爲「DAL」,「BL」,「WCFClient」的解決方案中有文件夾等。我從來沒有見過這種情況,但無法完全擺脫困擾我的麻煩關於它。
任何人都可以告訴我,如果有這種基於文件夾的組織方法的任何利弊(或可能專業人士)?
我在公司中遇到了一個奇怪的解決方案結構 - 應用程序的不同層被組織在文件夾中(而不是在項目中)。爲什麼要將項目添加到解決方案而不是文件夾?
例如,在名爲「DAL」,「BL」,「WCFClient」的解決方案中有文件夾等。我從來沒有見過這種情況,但無法完全擺脫困擾我的麻煩關於它。
任何人都可以告訴我,如果有這種基於文件夾的組織方法的任何利弊(或可能專業人士)?
這裏有一些缺點和優點對於.NET項目:
優點:
多個項目可能會導致循環引用問題,如果類不投入正確的組件。請參閱http://en.wikipedia.org/wiki/Circular_reference和 Why are circular references in Visual Studio a bad practice?
多個項目導致多個dll文件。處理這些可能會很棘手,如果他們堆積了很多。例如,我們的項目中有200個文件,TeamCity有時會在構建過程中丟失少量文件。我們在部署它們之前通過壓縮文件來解決它。
缺點:
*「多個項目導致多個dll文件」* - 只有當您的目標輸出是一個DLL文件。 *「代碼不是模塊化的,你不能在其他項目中重新使用它的一部分」* - 你在什麼基礎上得出這個結論?項目是特定於Microsoft的構建功能。無需Visual Studio,開發人員就可以在C++中完美地實現模塊化。 – JBentley 2014-09-04 16:50:42
但是,當文件位於文件夾中時,不會發生名稱衝突,因爲它們位於不同的名稱空間中,並且可以使用來自不同文件夾的文件夾中的文件:-)我在這裏丟失了什麼? :-) – 2014-09-04 16:54:27
基於WCFClient文件夾我認爲這是.NET項目。它很好地注意到語言沒有被提及。 在這個模塊化評論我試圖說,如果你有一個組件(項目),你想使用該組件的一個類。您必須添加對整個項目的參考。 – Mino 2014-09-04 16:55:02
項目包含編譯成彙編代碼。文件夾用於保持解決方案結構清晰。一個應用程序層不一定意味着一個項目。誰說DA,BL或服務層必須在一個單獨的程序集中實現? – Carsten 2014-09-04 17:25:28