会写代码不厉害,厉害的是写可读性强的代码,日常编码规范走起来(java版)

命名规范

接口命名

接口必须是名词,并且接口是能准确的描述要做的事情,命名能清晰的看出输入输出,可以是抽象的行为描述。接口必须以一个动作的名词形式结尾,比如reader,handler等。
接口的命名,必须是抽象的,除非接口本身和具体实现紧密相关,否则不应该在接口中包含任何和具体实现相关的名词。
接口命名根据行为分为以下几种:

  1. 读取某个数据,命名: {数据名称}Reader/Loader,如果是读取列表可以是 {数据名称}ListReader,或者 名称复数形式+Reader

    xxxReader 读取数据的接口

    xxxLoader 加载数据的接口

  2. 进行某件事情,比如进行一个订单金额的计算,OrderCalculatePerformer, {名词}{动词}Performer。
  3. xxxHelper 某些要共用的帮助
  4. xxxMaker 生成DTO VO的接口,生成数据的接口,比如 PaperDTOMaker,OrderVOMaker
  5. xxxHandler 处理某个事件
  6. xxxConverter 数据库对象、DTO、VO等数据承载类的转换器
  7. xxxInterceptor 拦截某个时间,一般只有一个intercept方法,返回boolean表明拦截是否成功
  8. xxxFiller 对DTO VO 根据业务逻辑进行字段set填充的接口,一般filler只有一个方法fillXXX,传入DTO VO和其他参数,且没有返回值,比如:
  9. xxxFinder 通过其他服务来查找数据的接口

接口方法命名

  1. 方法必须是描述一个动作,比如 getOrder, listOrders,方法以动词开头,{动词},或者 {动词}{名词} 的形式结尾,比如 handle getOrder。
  2. 常用的几个动词:  
    getXXX 返回单个对象
    listXXX(复数) 返回一组数据,可以是list,或者set等collection
    saveXXX 保存数据
    deleteXXX, removeXXX 删除、清理数据
    createXXX addXXX

     

数据对象命名

  1. 常规的公认的对象类型简写,可使用

    DTO 数据传输对象
    VO viewObject 展示对象,一般提供给前端
    BO businessObject ,业务对象
    info 数据信息结尾

  2. 数据库对象,全部用Do结尾,所有以DO结尾的对象,都是特制mybatis 映射出来的和数据库表对应的对象。
  3. 不以DO结尾的数据对象,比如DTO VO等,是暴露给外部api或者内部使用的,非数据库对象。和数据库对象之间使用xxxConverter接口进行转换。

包名

  1. 包名、文件夹名称,必须是小写,不能是多个单词。有且只能有单个单词,除了约定俗成的简写,不能使用简写。
    举例:正确的: order.detail  错误:orderdetail  orderDetail od 等。
    正确的:com.dt.school.web.action.impl
    包名的单词可以是名词、动词等,约定俗成的简写有:vo bo dto impl
  2. 接口所在的包名,要准确的描述此接口在业务上的含义,此包名不应该包含任何和具体实现有关的信息。
    正确的:com.dt.school.grade.GradeReader
    错误的:com.dt.school.grade.mysql.GradeReader 错误原因:接口所在的包,包含了具体的存储实现mysql。

     

  3. 实现类所在的包名可以包含具体的实现信息,比如一个接口有mysql和redis两种实现类,那实现类所在的包名可以分为mysql和redis。

接口实现类命名

  1. 当某个接口在短期内只有唯一的一个实现时,实现类的命名为:{接口名称}Impl, 比如接口:OrderCalculatePerformer 对应的唯一实现类为:OrderCalculatePerformerImpl,并且放置在接口目录下的 子目录 impl 中。
  2. 当接口有多个实现时,多个实现类应该根据具体的实现细节来确定实现名称,此名称应该很简单易懂的表明此实现的实现细节,对于使用者来说,从名称就非常容易判断此实现的具体信息。
    比如:接口: orderDetailReader, 有两个实现:MysqlOrderDetailReaderImpl RedisOrderDetailReaderImpl 从名字上能简单的分清楚此实现的细节,具体从数据库还是从redis获取。
  3. 接口有多个实现类时,实现类可以在不同的包名下的impl文件夹中。
  4. 不要介意实现类的类名太长,只要是能准确的描述实现类的功能或者使用方式,都是好的命名。

 

剩余部分请移步大本营https://www.cnblogs.com/lxcy/p/10413856.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值