关于项目架构设计的一些规范

简介:

几个规范:

  1. 单元测试设计
  2. DTO 命名
  3. Web API 命名
  4. 待补充...

1. 单元测试设计

可以参考微软开源项目的单元测试,地址:https://github.com/aspnet

首先是单元测试项目创建,我们一般会对各个类库项目进行单元测试,比如 Application、Repository 等等,我们是创建一个单元测试项目呢?还是多个呢?看下 EntityFramework 中的 Test 项目:

一般情况下,单元测试项目一一对应于要测试的项目,比如 EntityFramework.Core 对应于 EntityFramework.Core.Tests,还有一种创建方式是,整个解决方案只有一个单元测试项目,比如 EntityFramework.Tests,然后针对各个项目的测试用文件夹进行归类,哪种创建方式更好呢?简单总结下:

  • 一一对应方式:隔离性更好,单个类库测试运行更加轻快,坏处就是,解决方案项目越多的话,测试项目也就越多。
  • 大一统方式:一个测试项目对应多个类库项目,减少不必要的测试项目创建,坏处就是,解决方案项目越多的话,测试代码文件或目录会更加混乱,并且 packages 包会巨大。

我个人觉得,还是一一对应的方式比较好,毕竟一个测试项目的大小空间,并不是什么问题。

除去单元测试项目的创建,还有就是一些命名规范,大致总结下:

  • 测试项目命名:一般是在要测试类库项目的后面,加上 Tests,比如 EntityFramework.Core.Tests。
  • 测试代码文件命名:一般是在要测试类的后面,加上 Test,比如 DbContextTest。
  • 测试方法命名:下面详细说下这个。

关于测试方法的命名,在微软开源项目里是“五花八门”,我随便整几个:

  • Microsoft.Data.Entity.Tests.DbContextTest.Each_context_gets_new_scoped_services()
  • Microsoft.AspNet.Mvc.Core.Test.ActionExecutorTest.AsyncAction_TaskReturnType()
  • Microsoft.Dnx.Runtime.Tests.ApplicationEnvironmentFactsTest.GetDataReturnsNullForNonExistantKey()
  • Microsoft.AspNet.Http.Tests.FormFeatureTest.ReadFormAsync_SimpleData_ReturnsParsedFormCollection()
  • ...

哪种命名方式会比较好呢?其实没有准确的答案,但可以肯定的是,一种测试方法命名方式,在一个解决方案中必须是统一的,测试方法命名最重要的目的是,更好的表达这个测试方法要干什么,并且测试方法名称是给开发人员看的,如果你看一个测试方法名称,就知道它干的什么事,那么这种测试命名方式就是好的,如果团队协作开发一个项目的话,团队之间最好要统一起来,我个人比较倾向于上面第四种。

2. DTO 命名

DTO(Data Transfer Objects)-数据传输对象,有关 DTO 的项目及类,该如何命名呢?可以参考这篇博文:Create Data Transfer Objects (DTOs)

简单总结下:

  • DTO 项目命名:Sample.App.DTOs
  • DTO 类命名:BlogDTO

问题就是 DTO 单词是否大小写,还有就是最后的 s,以此类推,那什么情况下要加 s 呢?比如 Services、Interfaces、Controllers、Models 等等,这类项目的共同点就是,项目下面是相似类的集合,和这种情况不同的是,比如这个项目 Sample.App.Infrastructure,就没有 s。

3. Web API 命名

Web API 全称 ASP.NET Web API,Web 的项目可以命名为 Sample.App.Web,Web API 的项目改如何命名呢?三种方式:

  • Sample.App.WebApi
  • Sample.App.WebAPI
  • Sample.App.Web.API

哪种方式比较好呢?暂时没有 Google 到示例,不过,我个人倾向于第二种。


本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/4761047.html,如需转载请自行联系原作者

相关文章
|
3月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
54 3
|
11天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
55 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
1月前
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
57 26
|
3月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
270 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
3月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
86 6
|
3月前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
4月前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
72 2
|
4月前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
4月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
67 0
|
4月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
150 0

热门文章

最新文章