1、文件命名

一律小写,单词用“-”隔开。例如order-item.ts。有些特殊的文件可能需要用到“.”,这些文件一般需要声明是什么作用的。比如create-order.command.ts,order.service.ts,order.controller.ts,“.”后面的command、service、controller分别说明这几个文件代表命令、服务、控制器。

2、文件夹命名

一律小写,单词用“-”隔开,例如version-scheme,同样的,用些特殊情况是会用到“.”的,不过这时候的“.”表示层级关系。比如event.handler、command.executor、domain.core、domain.sale、domain.project

3、命令文件命名

采用动词+名词.command.ts的格式,比如create-order.command.ts,remove-order.command.ts
有时候没有名词,可以直接使用动词,比如login.command.ts、register.command.ts

4、命令执行者文件命名

采用动词+名词.executor.ts的格式,比如create-order.executor.ts,remove-order.executor.ts,有时候没有名词,可以直接使用动词,比如login.executor.ts、register.executor.ts

5、事件文件命名

采用名词+动词过去式.event.ts的格式,比如order-created.event.ts,order-removed.event.ts,如果没有名词,则直接使用动词过去式命名,比如logged.event.ts,register.event.ts

6、事件处理者命名

因为事件处理者是可以处理多个事件源的,所以并不是跟事件一一对应的。就比如发送邮件,注册成功、密码修改成功等事件发布后,都需要发送一封邮件,并不适合用事件名.handler.ts来命名,所以还是以动词+名词来说明能做什么事,比如:send-email.ts

7、代码命名

变量名用首字母小写的驼峰命名:order、orderItems、cart、cartItems
布尔类型变量命名为is+形容词、has+动词过去式、can+动词作为前缀,比如isVisible、hasCancelled、canWrite

常量、枚举值全部大写 PI、COLOR.RED

类名用首字母大写的驼峰命名,比如OrderAppService、CreateOrderCommand、OrderCreatedEvent、OrderCreatedExecutor、OrderController。

常用的类名后缀有AppService(应用服务)、DomainService(领域服务)、Command(命令)、Event(事件)、Executor(执行者)、Controller(控制器)、DTO(数据传输对象)、VO(视图对象)

url命名采用RESTful风格,一般是用名词的复数形式,请求方式使用GET、POST、PUT、DELETE,一律全部小写,单词用“_”隔开。但RESTful是面向资源的,有时候并不能满足场景,比如发送邮件。如果要进行抽象的话,可以设计成/send_email/?from={email_id}&to={user_id},但这里提供另一个设计格式:/email/{email_id}/actions/send/?user_id={user_id}

方法命名:动词+名词或动词:addItem()、handle()、execute()、sendEmail()

8、常用命名

动词:
create(新增)、update(修改)、remove(删除)、get(获取单条详情)、list(获取批量数据)、register(注册)、add(添加)、bind(绑定)、publish(发布)、subscribe(订阅)、execute(执行)
名词:status(状态)、id(编码,组合使用时,userId,不使用userID),更多专业名词请见词典。

参照文档:

https://www.yht7.com/news/9642
https://zhuanlan.zhihu.com/p/271947419