🍀一份 Java 常用命名梳理--纯个人篇

2,313 阅读6分钟

以下命名纯属个人习惯,非官方,如感兴趣可一提起探讨!

好的命名能见名知意,看似简单其实不易。最近有空,梳理一些常见命名套路,以供参考!

本文概要: 主要罗列常见的命名前缀后缀,从变量、设计模式、方法等展开;所枚举只是冰山一角,如有需要再补充。

🐳一、变量

下面是很多源码中也经常出现的命名前缀后缀,希望通过这种方式,对日常编程命名有一定参考价值!

命名案例描述
xxxContextRpcRequestContext 、ServletContext 应用上下文应用上下文,整个调用方法链条;作用域较大、生命周期长,能承载较多信息
xxxHolderBeanDefinitionHolder,除了包含BeanDefinition信息持有者,拥有某一个对象; 理论上,xxxHolder 对象不具备行为能力,只提供xxx信息和一些相关附加信息
xxxHandlermybatis 中的 ResultHandler、ParameterHandler、StatementHandler; MessageHandler指某种处理器或处理程序,其主要职责是处理特定类型的事件或任务
xxxProcessordataProcessor功能的处理过程
xxxActiondeleteAction行为
xxxFilterConvertFilter过滤器
xxxInterceptorUpdateInterceptor拦截器
xxxPipelineservciePipeline管道、责任链中使用
xxxChainFilterChain链条、责任链中使用
xxxChannelSocketChannel通道
xxxRequesthttpRequest请求体,包含内容多
xxxResponsehttResponse请求返回,包含内容多
xxxParamTeamParam请求参数
xxxRegistryMapperRegistry注册资源,以及管理他们
xxxFactoryCarProductFactory生命生产工厂
xxxProxyFactoryAopProxyFactory代理工程等
xxxBuilderstringBuilder构造器
xxxCreatorreportCreator创造者
xxxProcessordataProcessor处理器
xxxConverterjsonConverter转换器,从一种状态转换成另外一种状态、或者数据格式等
xxxCallbackcompletionCallback方法回调
xxxTask/ xxxJobbackTask/backJob特定任务
xxxManagerUserManager、TaskManager、ConfigruationManager对有生命状态的对象进行管理;通常用于封装业务逻辑或处理复杂操作的类
xxxUtilcacheUtil工具类
xxxHelperbizHelper助手,协助完成
xxxResourceimageResource特定资源
xxxConfigappConfig配置
xxxExceptionBizException异常
xxxBufferStringBuffer缓冲区
xxxListenerActionListener监听者,响应事件或变化
xxxPoolConnectionPool连接池
#### xxxParserXmlParser解析器,什么的解析
xxxEngineWorkflowEngin比如流程引擎,非常核心的类
xxxBootstrapAppBootstrap框架的启动类
xxxGatewayApiGateway网关
xxxLoaderResourceLoader加载器
xxxAdapterhttpAdapter适配
xxxValidatorParamValidator校验器
xxxLayerDatabaseAdapterLayer层级,比如 ETL
xxxProducer /xxxConsumerKafkaProducer生成者、消费者
xxxPluginCompilerPlugin插件
xxxClientTransportClient客户端
xxxApplicationDemoApplication应用入口
isXXX / hasXXX,canXXXisEnabled, hasError, canEditboolean 类型的状态; 布尔相关的命名加上 is、can、should、has 等前缀。
defaultXXXdefaultInvokerService默认什么的处理器
assembleXXXassembleCar组装、收集、聚集
customXXXcustomDataSource自定义类
IllegalXXXIllegalException非法,如非法异常
tryXXXtryRelease尝试,不保证成功
........

其他常见的后缀: model、entity、DAO、DTO、BO、VO、service、controller、manager、respository

还有很多,就不展开了,有需要自行总结。

🐋二、模式

设计模式是编程中经常遇见的,通过命名能快速确定设计模式,对于阅读代码非常有帮助。

以下是部分常见的设计模式的命名方式,不是强制性的命名规范。

模式名称常见前后缀具体例子和中文注释
单例模式Singleton、InstanceDatabaseSingleton - 数据库连接的单例实例。
工厂方法Factory, CreatorCarFactory - 创建不同类型的汽车对象。
抽象工厂AbstractFactoryFurnitureFactory - 提供一系列相关或相互依赖的对象
建造者模式BuilderHouseBuilder - 分步构建复杂的对象,如建造一个房子。
原型模式PrototypeShapePrototype - 通过复制现有对象创建新对象,比如克隆形状对象。
适配器模式AdapterSocketAdapter - 将一个类的接口转换为客户期望的另一个接口
组合模式CompositeFileComposite - 以树形结构来表示整体与部分层次结构,使得用户对单个对象和组合对象的使用具有一致性。
装饰模式DecoratorCoffeeDecorator - 动态地给一个对象添加一些额外的职责,比如给咖啡添加糖或者奶。
外观模式FacadeComputerFacade - 为子系统中的一组接口提供一个一致的界面,简化了客户端对子系统的访问
享元模式FlyweightCharacterFlyweight - 使用共享技术有效地支持大量细粒度的对象
代理模式Proxy、#### DelegateImageProxy - 为其他对象提供一个代理以控制对这个对象的访问
责任链模式Chain, HandlerSupportHandler - 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。
命令模式CommandLightCommand - 将请求封装成对象,从而使你可以用不同的请求、队列或者日志来参数化其他对象
解释器模式InterpreterExpressionInterpreter - 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
迭代器模式IteratorArrayListIterator - 提供方法顺序访问一个元素,而又不暴露该对象的内部表示。
中介者模式MediatorChatRoomMediator - 用一个中介对象来封装一系列的对象交互
观察者模式Observer, ListenerWeatherObserver - 定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象。
状态模式StateOrderState - 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
策略模式StrategySortingStrategy - 定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换
模板方法TemplateGameTemplate - 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
访问者模式VisitorNodeVisitor - 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

备忘录和 桥接模式用的少,未给出。

🐬三、方法

工作中,使用过的一些通用性方法命名。

code案例描述
xxxInvoke() / InvokeXXX()beforeInvoke(xx)\afterInvoke()在激活调用某些方法,或者回调
xxxRun()/xxxStart()appRun()/xxxStart()特定功能开始、启动
xxxlaunch() / launchlaunch()动某个过程、服务或应用程序
doXXX()doDipatch真正的调用的方法,doGet(String BeanName)/ doRegister(XXX) 注册方法
executeXXX()executeCommand()执行模型方法
processXXX()processData()处理事情

方法的命名非常之多,也就不一一举例了。

🦭四、其他

少部分近义词

单词可替代单词
senddeliver、dispatch、announce、distribute、route
findsearch、extract、locate、recover
startlaunch、create、begin、open
makecreate、set up、build、generate、compose、add、new
  • 名字长短准则:作用域越大,名字越长。在短作用域才使用简单名字。
  • 可以使用 item_i, index_i 替代 i、j、k 。 使代码更有可读性。

最后小结:通过一些名称的梳理和总结,希望在今后的工作中起到一定的帮助作用,做到一点点有迹可循!