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

简介:

几个规范:

  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,如需转载请自行联系原作者

相关文章
|
消息中间件 监控 前端开发
如何开发项目管理系统中的项目结项板块?(附架构图+流程图+代码参考)
在企业项目管理中,“项目结项”是关键环节,常因流程不清、文档不全、审批滞后等问题导致交付困难。本文介绍如何通过“项目结项”模块实现线上化管理,涵盖结项申请、审批流程、成果上传、权限控制等功能,帮助团队高效完成项目收尾,避免成果丢失与流程混乱。内容包括功能设计、业务流程、系统架构、数据库设计、核心代码实现、前端交互及优化建议,助力项目管理系统快速落地并稳定运行。
|
数据挖掘 项目管理 Python
如何开发项目管理系统中的项目启动板块?(附架构图+流程图+代码参考)
本文介绍了项目管理系统中“项目启动”板块的设计与实现,涵盖功能模块、业务流程、开发技巧及效果展示,并提供代码参考和常见问题解答,助力企业高效搭建项目管理平台。
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
593 2
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
1016 0
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
959 0
|
设计模式 开发者
一、HarmonyOS Next 开发者手册项目之项目架构设计
该项目是一个基于HarmonyOS Next的开发者学习手册应用,旨在帮助开发者系统学习HarmonyOS开发知识。项目采用分级学习方式,从基础到高级逐步深入讲解技术与实践案例。前四章重点介绍应用架构相关内容,助力快速掌握应用核心。 项目结构清晰,包含主入口、源代码目录、公共资源和工具等。页面导航分为多个阶段:萌新小白(基础入门)、登堂入室(进阶学习)、进阶高手(高级开发)。支持Markdown解析,使用`@luvi/lv-markdown-in`插件展示内容,并定义了多种数据结构以规范开发流程。 源码已开源,持续更新中
389 1
|
监控 前端开发 BI
如何开发项目管理系统中的项目收支板块?(附架构图+流程图+代码参考)
本文深入讲解项目管理系统中项目收支模块的设计与实现,涵盖预算、收入与支出管理,以及报表分析功能。内容包括模块功能概述、业务流程、开发技巧与实现方法,并提供数据库设计及前后端代码示例,助力企业打造高效的项目财务管控系统。
|
SQL 前端开发 项目管理
如何开发项目管理系统中的项目执行板块?(附架构图+流程图+代码参考)
随着企业项目规模扩大,传统管理方式已难以满足需求。本文介绍项目管理系统中“项目执行”板块的开发,涵盖任务管理、创建、验收及进度汇报等核心环节。通过功能设计、业务流程和开发技巧,结合代码示例,帮助企业高效推进项目执行,提升管理效率。
|
存储 数据采集 机器学习/深度学习
新闻聚合项目:多源异构数据的采集与存储架构
本文探讨了新闻聚合项目中数据采集的技术挑战与解决方案,指出单纯依赖抓取技术存在局限性。通过代理IP、Cookie和User-Agent的精细设置,可有效提高采集策略;但多源异构数据的清洗与存储同样关键,需结合智能化算法处理语义差异。正反方围绕技术手段的有效性和局限性展开讨论,最终强调综合运用代理技术与智能数据处理的重要性。未来,随着机器学习和自然语言处理的发展,新闻聚合将实现更高效的热点捕捉与信息传播。附带的代码示例展示了如何从多个中文新闻网站抓取数据并统计热点关键词。
859 2
新闻聚合项目:多源异构数据的采集与存储架构
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
1613 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战