如果你是唯一一個在項目上工作的人,我會做你首先對你有意義。沒有什麼比施加目錄或項目結構更糟糕的是你覺得不直觀。 \ Core \文件夾或\ Controller \文件夾中的BaseController類是什麼?就個人而言,我會看看控制器,但有些人發誓它應該在\ Core \或\ Bases中。
第一個新手陷阱認爲您可以以錯誤的方式組織您的代碼,並以某種方式反映了項目的成功。我見過有30個文件在一個文件夾中的項目,以及其他30個文件夾中有20個文件夾的項目。
第二個新手陷阱忘記了與其他語言相比,您擁有真棒智能感知,代碼導航工具和Visual Studio重構支持的優勢。你也有一個編譯器,它會讓文件放錯位置而不那麼痛苦。如果你把某些東西放在「錯誤」的地方,那麼你可以隨時找到它並將它拖到需要的地方。
我會說實話我現在正在做一個項目,我甚至不知道某些類在我的文件結構中的位置。轉到定義/聲明是我使用很多的鍵盤快捷鍵。因爲只有我用代碼工作,這很好。如果我不得不在項目中添加另一個開發人員,我可能會清理乾淨。
我個人傾向於將Interfaces與它們的實現類型放在同一個文件夾中。 IPaymentGateway與AuthorizeNetGateway和PaypalGateway位於同一個文件夾中。如果我無法一次在我的解決方案資源管理器側欄中查看該文件夾中的所有文件,那麼我將所有網關文件移動到\ Gateway \文件夾中。
隨着依賴注入添加到混音我建議你只關心命名空間爆炸。你可以做的最糟糕的事情是用很長的聲明和別名處理引導程序和文件。
ForRequestedType<Customer>
是清潔比
using KevDog.Models
using Customer=KevDog.Models.Customer
或
ForRequestedType<KevDog.Models.Customer>
另一種方式來避免這個問題是要明確的,當你命名的東西:客戶,CustomerViewModel,CustomerController,CustomerDataRow,CustomerView
對於TDD,您幾乎必須有兩個引導程序來管理你的具體類型。你真的不希望你的單元測試使用AuthorizeNetGateway:IPaymentGateway,而是StubGateway:IPaymentGateway。
現在我也是DI的新手,所以我傾向於使事情變得非常簡單,並反映101級別的教程和文檔。只有在特定情況需要時才能使用基於構建配置的動態注入,並且您確切知道自己爲什麼要這樣做。
我通常也保留MVC應用程序的默認結構。只需要99%的所有教程和視頻,就可以更容易地使您的代碼具有相同的結構。
希望這會有所幫助。
我的帶StructureMap的新手陷阱是中等信任下的安全權限例外。如果您的應用程序將在中等信任環境中運行,您將需要查看備用DI容器。 – 2009-06-08 03:24:28