会写代码不厉害,厉害的是写可读性强的代码,日常编码规范走起来(java版)
程序员文章站
2024-03-18 21:41:52
...
命名规范
接口命名
接口必须是名词,并且接口是能准确的描述要做的事情,命名能清晰的看出输入输出,可以是抽象的行为描述。接口必须以一个动作的名词形式结尾,比如reader,handler等。
接口的命名,必须是抽象的,除非接口本身和具体实现紧密相关,否则不应该在接口中包含任何和具体实现相关的名词。
接口命名根据行为分为以下几种:
- 读取某个数据,命名: {数据名称}Reader/Loader,如果是读取列表可以是 {数据名称}ListReader,或者 名称复数形式+Reader
xxxReader 读取数据的接口
xxxLoader 加载数据的接口
- 进行某件事情,比如进行一个订单金额的计算,OrderCalculatePerformer, {名词}{动词}Performer。
- xxxHelper 某些要共用的帮助
- xxxMaker 生成DTO VO的接口,生成数据的接口,比如 PaperDTOMaker,OrderVOMaker
- xxxHandler 处理某个事件
- xxxConverter 数据库对象、DTO、VO等数据承载类的转换器
- xxxInterceptor 拦截某个时间,一般只有一个intercept方法,返回boolean表明拦截是否成功
- xxxFiller 对DTO VO 根据业务逻辑进行字段set填充的接口,一般filler只有一个方法fillXXX,传入DTO VO和其他参数,且没有返回值,比如:
- xxxFinder 通过其他服务来查找数据的接口
接口方法命名
- 方法必须是描述一个动作,比如 getOrder, listOrders,方法以动词开头,{动词},或者 {动词}{名词} 的形式结尾,比如 handle getOrder。
- 常用的几个动词:
getXXX 返回单个对象 listXXX(复数) 返回一组数据,可以是list,或者set等collection saveXXX 保存数据 deleteXXX, removeXXX 删除、清理数据 createXXX addXXX
数据对象命名
- 常规的公认的对象类型简写,可使用
DTO 数据传输对象
VO viewObject 展示对象,一般提供给前端
BO businessObject ,业务对象
info 数据信息结尾 - 数据库对象,全部用Do结尾,所有以DO结尾的对象,都是特制mybatis 映射出来的和数据库表对应的对象。
- 不以DO结尾的数据对象,比如DTO VO等,是暴露给外部api或者内部使用的,非数据库对象。和数据库对象之间使用xxxConverter接口进行转换。
包名
- 包名、文件夹名称,必须是小写,不能是多个单词。有且只能有单个单词,除了约定俗成的简写,不能使用简写。
举例:正确的: order.detail 错误:orderdetail orderDetail od 等。
正确的:com.dt.school.web.action.impl
包名的单词可以是名词、动词等,约定俗成的简写有:vo bo dto impl - 接口所在的包名,要准确的描述此接口在业务上的含义,此包名不应该包含任何和具体实现有关的信息。
正确的:com.dt.school.grade.GradeReader 错误的:com.dt.school.grade.mysql.GradeReader 错误原因:接口所在的包,包含了具体的存储实现mysql。
- 实现类所在的包名可以包含具体的实现信息,比如一个接口有mysql和redis两种实现类,那实现类所在的包名可以分为mysql和redis。
接口实现类命名
- 当某个接口在短期内只有唯一的一个实现时,实现类的命名为:{接口名称}Impl, 比如接口:OrderCalculatePerformer 对应的唯一实现类为:OrderCalculatePerformerImpl,并且放置在接口目录下的 子目录 impl 中。
- 当接口有多个实现时,多个实现类应该根据具体的实现细节来确定实现名称,此名称应该很简单易懂的表明此实现的实现细节,对于使用者来说,从名称就非常容易判断此实现的具体信息。
比如:接口: orderDetailReader, 有两个实现:MysqlOrderDetailReaderImpl RedisOrderDetailReaderImpl 从名字上能简单的分清楚此实现的细节,具体从数据库还是从redis获取。 - 接口有多个实现类时,实现类可以在不同的包名下的impl文件夹中。
- 不要介意实现类的类名太长,只要是能准确的描述实现类的功能或者使用方式,都是好的命名。
剩余部分请移步大本营https://www.cnblogs.com/lxcy/p/10413856.html
上一篇: DAG区块链 博客分类: DAG区块链
下一篇: 力扣刷题记录