【日常业务开发】业务代码常见类命名

【日常业务开发】业务代码常见类命名


1、实体类。

  • 数据对象:***DO,***即为数据表名。 UserDO
  • 数据传输对象:***DTO,***为业务领域相关的名称。 UserDTO
  • 展示对象:***VO,***一般为网页名称。 UserVO
  • POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

2、CRUD业务操作,三层命名。 ***Controller,***Service(接口),*** Dao/Mapper(接口)

UserController
接口: UserService  实现类: UserServiceImpl
UserDao/UserMapper

Controller

  1. 获取对象的方法用 query 做前缀
  2. 插入的方法用 add 做前缀
  3. 删除的方法用 delete 做前缀
  4. 修改的方法用 modify 做前缀

Service

  1. 获取单个对象的方法用 get 做前缀:getUser
  2. 获取多个对象的方法用 list做前缀:listUser
  3. 获取统计值的方法用 count 做前缀
  4. 插入的方法用 save(推荐)或 insert 做前缀:saveUser
  5. 删除的方法用 remove(推荐)或 delete 做前缀:removeUser
  6. 修改的方法用 update 做前缀:updateUser
  7. 分页的方法用 page 做前缀:pageUser

dao

  1. 获取对象的方法用 select 做前缀:selectUserById
  2. 插入的方法用 insert 做前缀:insertUser
  3. 删除的方法用 delete 做前缀:deleteUserById,多个参数deleteUserBy/deleteUserWith
  4. 修改的方法用 update 做前缀:updateXXXById,多个参数updateXXXBy/ updateXXXWith

方法命名: 通常采用动词/动词+名词的组合,方法签名由多个单词组成,则从第二个单词起,使用驼峰命名法进行书写。

  • 表述获取: 如果一个方法用于获取某个值,通常使用get作为其前缀,例如:
    public String getUserName(){
       //...
    }
    public List<Integer> getUserIds(){
       //...
    }
    public User getOne(){
       //...
    }
    
  • 表述查询: 如果方法需要通过查询或筛选的方式获取某个数据,通常使用find/query作为其前缀,例如:
    public List<User> findOne(Integer id){
        //...
    }
    public List<Integer> findAll(){
        //...
    } 
    public List<String> queryOrders(){
        //...
    }
    
  • 表述条件: 如果一个方法需要一些条件参数,则可以使用by/with等字符作为方法名中条件的连接符,例如:
    public User findByUsername(String username){
        //...
    }
    public List<Integer> getUserIdsWithState(boolean state){
        //...
    }
    public List<User> findAllByUsernameOrderByIdDesc(String username){
        //...
    }
    
  • 表述设置: 如果一个方法是要设置,插入,修改,删除等操作,应该将对应的动词(set,insert,update,delete)作为其名词的前缀,例如:
    public void setName(String name){
        //...
    }
    public User insert(User user){
        //...
    }
    public void update(User user){
        //...
    }
    public void clearAll(){
        //...
    }
    

3、抽象类,Abstract***

AbstractFactoryBean
AbstractBeanDefinition
AbstractBeanFactory

4、异常类, ***Exception

GlobalExceptionHandler

5、工具类***Util,***Helper。都表示工具类,Util一般是无状态的,Helper以便需要创建实例才能使用。但是一般没有使用Tool作为后缀的。

HttpUtil
TestKeyFieldHelper
CreationHelper

6、***Constant

一般用于常量列表。

CommonConstant

7、***Mode,***Type, ***Enum

看到mode这个后缀,就能猜到这个类大概率是枚举。它通常把常见的可能性都列到枚举类里面,其他地方就可以引用这个Mode。

OperationMode
BridgeMode
ActionType
StatusEnum

8、***Filter

过滤器,用来筛选某些满足条件的数据集,或者在满足某些条件的时候执行一部分逻辑。如果和责任链连接起来,则通常能够实现多级的过滤。

FilenameFilter
AfterFirstEventTimeFilter
ScanFilter

9、***Interceptor

拦截器,其实和Filter差不多。不过在Tomcat中,Interceptor可以拿到controller对象,但filter不行。拦截器是被包裹在过滤器中。

HttpRequestInterceptor

10、***Pool

表示池子。内存池,线程池,连接池。

ThreadPool
ConnectionPool
ObjectPool
MemoryPool

11、***Wrapper

用来包装某个对象,做一些额外的处理,以便增加或者去掉某些功能。

IsoBufferWrapper
ResponseWrapper
MavenWrapperDownloader 

12、Option, Param,***Attribute,***Properties

用来表示配置信息。说实话,它和Properties的区别并不大,但由于Option通常是一个类,所以功能可以扩展的更强大一些。它通常比Config的级别更小,关注的也是单个属性的值。Param一般是作为参数存在,对象生成的速度要快一些。

SpecificationOption
SelectOption
AlarmParam
ModelParam

13、***Converter,***Resolver

转换和解析。一般用于不同对象之间的格式转换,把一类对象转换成另一类。注意它们语义上的区别,一般特别复杂的转换或者有加载过程的需求,可以使用Resolver。

DataSetToListConverter
LayoutCommandLineConverter
InitRefResolver
MustacheViewResolver

14、***Formatter

格式化类。主要用于字符串、数字或者日期的格式化处理工作。

DateFormatter
StringFormatter

15、***Factory

毫无疑问,工厂模式的命名,耳熟能详。尤其是Spring中,多不胜数。

SessionFactory
ScriptEngineFactory
LiveCaptureFactory

16、***Holder

表示持有某个或者某类对象的引用,并可以对其进行统一管理。多见于不好回收的内存统一处理,或者一些全局集合容器的缓存。

QueryHolder
InstructionHolder
ViewHolder

17、***Provider

Provider = Strategy + Factory Method。它更高级一些,把策略模式和方法工厂揉在了一块,让人用起来很顺手。Provider一般是接口或者抽象类,以便能够完成子实现。

AccountFeatureProvider
ApplicationFeatureProviderImpl
CollatorProvider

18、***Processor

某一类功能的处理器,用来表示某个处理过程,是一系列代码片段的集合。如果你不知道一些顺序类的代码怎么命名,就可以使用它,显得高大上一些。

CompoundProcessor
BinaryComparisonProcessor
DefaultDefaultValueProcessor

19、***Registrar

注册并管理一系列资源。

ImportServiceRegistrar
IKryoRegistrar
PipelineOptionsRegistrar

20、***Invoker,***Invocation

invoker是一类接口,通常会以反射或者触发的方式,执行一些具体的业务逻辑。通过抽象出invoke方法,可以在invoke执行之前对入参进行记录或者处理;在invoke执行之后对结果和异常进行处理,是AOP中常见的操作方式。

MethodInvoker
Invoker
ConstructorInvocation

21、***Initializer

如果你的应用程序,需要经过大量的初始化操作才能启动,那就需要把它独立出来,专门处理初始化动作。

MultiBackgroundInitialize
ApplicationContextInitializer

22、***Generator

生成器,一般用于生成代码,生成id等。

CodeGenerator
CipherKeyGenerator

23、***Aware

Aware就是感知的意思,一般以该单词结尾的类,都实现了Aware接口。拿spring来说,Aware 的目的是为了让bean获取spring容器的服务。具体回调方法由子类实现,比如ApplicationContextAware。它有点回调的意思。

ApplicationContextAware
ApplicationStartupAware
ApplicationEventPublisherAware

24、***Bootstrap,***Starter

一般作为程序启动器使用,或者作为启动器的基类。通俗来说,可以认为是main函数的入口。

AbstractBootstrap
ServerBootstrap
MacosXApplicationStarter
DNSTaskStarter
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李熠漾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值