如果你是唯一一个在这个项目上工作的人,我会先做对你有意义的事情。没有什么比强加给您不直观的目录或项目结构更糟糕的了。BaseController 类是在 \Core\ 文件夹还是 \Controller\ 文件夹中?我个人会查看控制器,但有些人发誓它应该在 \Core\ 或 \Bases 中。
第一个新手陷阱是认为您可以以错误的方式组织代码,并以某种方式反映了项目的成功。我见过一个文件夹中有 30 个文件的项目,而其他项目中有 30 个文件的 20 个文件夹。
第二个新手陷阱是忘记了与其他语言相比,您可以从 Visual Studio 的出色智能感知、代码导航工具和重构支持中受益。您还有一个编译器,它可以让放错文件的痛苦大大减轻。如果你把东西放在“错误”的地方,没关系,你总能找到它并将它拖到需要的地方。
老实说,我现在正在做一个项目,我什至不确定某些类在我的文件结构中的位置。Go To Definition/Declaration 是我经常使用的键盘快捷键。因为只有我在使用代码,所以这很好。如果我不得不在项目中添加另一个开发人员,我可能会清理干净。
就我个人而言,我倾向于将接口及其实现类型放在同一个文件夹中。IPaymentGateway 与 AuthorizeNetGateway 和 PaypalGateway 位于同一文件夹中。如果我无法在我的解决方案资源管理器侧边栏中一次查看该文件夹中的所有文件,那么我将所有网关文件移动到 \Gateway\ 文件夹中。
随着依赖注入添加到组合中,我建议您只关注名称空间爆炸。你能做的最糟糕的事情就是用长的 using 声明和别名弄乱你的引导程序和文件。
ForRequestedType<Customer>
比干净
using KevDog.Models
using Customer=KevDog.Models.Customer
或者
ForRequestedType<KevDog.Models.Customer>
避免此问题的另一种方法是在命名事物时明确:Customer、CustomerViewModel、CustomerController、CustomerDataRow、CustomerView
对于 TDD,您几乎必须有两个引导程序来管理您的具体类型。您真的不希望您的单元测试使用 AuthorizeNetGateway : IPaymentGateway,而是 StubGateway : IPaymentGateway。
现在我也是 DI 的新手,所以我倾向于让事情变得非常简单,并反映 101 级教程和文档。仅当特定情况需要并且您确切知道为什么要这样做时,才应使用基于构建配置的动态注入。
我通常也会保留 MVC 应用程序的默认结构。让您的代码与 99% 的教程和视频具有相同的结构更容易。
希望这可以帮助。