欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-18 21:41:52
...

命名规范

接口命名

接口必须是名词,并且接口是能准确的描述要做的事情,命名能清晰的看出输入输出,可以是抽象的行为描述。接口必须以一个动作的名词形式结尾,比如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

 

相关标签: 经验总结 JAVA