以下命名纯属个人习惯,非官方,如感兴趣可一提起探讨!
好的命名能见名知意,看似简单其实不易。最近有空,梳理一些常见命名套路,以供参考!
本文概要: 主要罗列常见的命名前缀后缀,从变量、设计模式、方法等展开;所枚举只是冰山一角,如有需要再补充。
🐳一、变量
下面是很多源码中也经常出现的命名前缀后缀,希望通过这种方式,对日常编程命名有一定参考价值!
命名 | 案例 | 描述 |
---|---|---|
xxxContext | RpcRequestContext 、ServletContext 应用上下文 | 应用上下文,整个调用方法链条;作用域较大、生命周期长,能承载较多信息 |
xxxHolder | BeanDefinitionHolder,除了包含BeanDefinition信息 | 持有者,拥有某一个对象; 理论上,xxxHolder 对象不具备行为能力,只提供xxx信息和一些相关附加信息 |
xxxHandler | mybatis 中的 ResultHandler、ParameterHandler、StatementHandler; MessageHandler | 指某种处理器或处理程序,其主要职责是处理特定类型的事件或任务 |
xxxProcessor | dataProcessor | 功能的处理过程 |
xxxAction | deleteAction | 行为 |
xxxFilter | ConvertFilter | 过滤器 |
xxxInterceptor | UpdateInterceptor | 拦截器 |
xxxPipeline | servciePipeline | 管道、责任链中使用 |
xxxChain | FilterChain | 链条、责任链中使用 |
xxxChannel | SocketChannel | 通道 |
xxxRequest | httpRequest | 请求体,包含内容多 |
xxxResponse | httResponse | 请求返回,包含内容多 |
xxxParam | TeamParam | 请求参数 |
xxxRegistry | MapperRegistry | 注册资源,以及管理他们 |
xxxFactory | CarProductFactory | 生命生产工厂 |
xxxProxyFactory | AopProxyFactory | 代理工程等 |
xxxBuilder | stringBuilder | 构造器 |
xxxCreator | reportCreator | 创造者 |
xxxProcessor | dataProcessor | 处理器 |
xxxConverter | jsonConverter | 转换器,从一种状态转换成另外一种状态、或者数据格式等 |
xxxCallback | completionCallback | 方法回调 |
xxxTask/ xxxJob | backTask/backJob | 特定任务 |
xxxManager | UserManager、TaskManager、ConfigruationManager | 对有生命状态的对象进行管理;通常用于封装业务逻辑或处理复杂操作的类 |
xxxUtil | cacheUtil | 工具类 |
xxxHelper | bizHelper | 助手,协助完成 |
xxxResource | imageResource | 特定资源 |
xxxConfig | appConfig | 配置 |
xxxException | BizException | 异常 |
xxxBuffer | StringBuffer | 缓冲区 |
xxxListener | ActionListener | 监听者,响应事件或变化 |
xxxPool | ConnectionPool | 连接池 |
#### xxxParser | XmlParser | 解析器,什么的解析 |
xxxEngine | WorkflowEngin | 比如流程引擎,非常核心的类 |
xxxBootstrap | AppBootstrap | 框架的启动类 |
xxxGateway | ApiGateway | 网关 |
xxxLoader | ResourceLoader | 加载器 |
xxxAdapter | httpAdapter | 适配 |
xxxValidator | ParamValidator | 校验器 |
xxxLayer | DatabaseAdapterLayer | 层级,比如 ETL |
xxxProducer /xxxConsumer | KafkaProducer | 生成者、消费者 |
xxxPlugin | CompilerPlugin | 插件 |
xxxClient | TransportClient | 客户端 |
xxxApplication | DemoApplication | 应用入口 |
isXXX / hasXXX,canXXX | isEnabled, hasError, canEdit | boolean 类型的状态; 布尔相关的命名加上 is、can、should、has 等前缀。 |
defaultXXX | defaultInvokerService | 默认什么的处理器 |
assembleXXX | assembleCar | 组装、收集、聚集 |
customXXX | customDataSource | 自定义类 |
IllegalXXX | IllegalException | 非法,如非法异常 |
tryXXX | tryRelease | 尝试,不保证成功 |
…….. |
其他常见的后缀: model、entity、DAO、DTO、BO、VO、service、controller、manager、respository
还有很多,就不展开了,有需要自行总结。
🐋二、模式
设计模式是编程中经常遇见的,通过命名能快速确定设计模式,对于阅读代码非常有帮助。
以下是部分常见的设计模式的命名方式,不是强制性的命名规范。
模式名称 | 常见前后缀 | 具体例子和中文注释 |
---|---|---|
单例模式 | Singleton、Instance | DatabaseSingleton – 数据库连接的单例实例。 |
工厂方法 | Factory, Creator | CarFactory – 创建不同类型的汽车对象。 |
抽象工厂 | AbstractFactory | FurnitureFactory – 提供一系列相关或相互依赖的对象 |
建造者模式 | Builder | HouseBuilder – 分步构建复杂的对象,如建造一个房子。 |
原型模式 | Prototype | ShapePrototype – 通过复制现有对象创建新对象,比如克隆形状对象。 |
适配器模式 | Adapter | SocketAdapter – 将一个类的接口转换为客户期望的另一个接口 |
组合模式 | Composite | FileComposite – 以树形结构来表示整体与部分层次结构,使得用户对单个对象和组合对象的使用具有一致性。 |
装饰模式 | Decorator | CoffeeDecorator – 动态地给一个对象添加一些额外的职责,比如给咖啡添加糖或者奶。 |
外观模式 | Facade | ComputerFacade – 为子系统中的一组接口提供一个一致的界面,简化了客户端对子系统的访问 |
享元模式 | Flyweight | CharacterFlyweight – 使用共享技术有效地支持大量细粒度的对象 |
代理模式 | Proxy、#### Delegate | ImageProxy – 为其他对象提供一个代理以控制对这个对象的访问 |
责任链模式 | Chain, Handler | SupportHandler – 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 |
命令模式 | Command | LightCommand – 将请求封装成对象,从而使你可以用不同的请求、队列或者日志来参数化其他对象 |
解释器模式 | Interpreter | ExpressionInterpreter – 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 |
迭代器模式 | Iterator | ArrayListIterator – 提供方法顺序访问一个元素,而又不暴露该对象的内部表示。 |
中介者模式 | Mediator | ChatRoomMediator – 用一个中介对象来封装一系列的对象交互 |
观察者模式 | Observer, Listener | WeatherObserver – 定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象。 |
状态模式 | State | OrderState – 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 |
策略模式 | Strategy | SortingStrategy – 定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换 |
模板方法 | Template | GameTemplate – 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 |
访问者模式 | Visitor | NodeVisitor – 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 |
备忘录和 桥接模式用的少,未给出。
🐬三、方法
工作中,使用过的一些通用性方法命名。
code | 案例 | 描述 |
---|---|---|
xxxInvoke() / InvokeXXX() | beforeInvoke(xx)afterInvoke() | 在激活调用某些方法,或者回调 |
xxxRun()/xxxStart() | appRun()/xxxStart() | 特定功能开始、启动 |
xxxlaunch() / launch | launch() | 动某个过程、服务或应用程序 |
doXXX() | doDipatch | 真正的调用的方法,doGet(String BeanName)/ doRegister(XXX) 注册方法 |
executeXXX() | executeCommand() | 执行模型方法 |
processXXX() | processData() | 处理事情 |
方法的命名非常之多,也就不一一举例了。
🦭四、其他
少部分近义词
单词 | 可替代单词 |
---|---|
send | deliver、dispatch、announce、distribute、route |
find | search、extract、locate、recover |
start | launch、create、begin、open |
make | create、set up、build、generate、compose、add、new |
- 名字长短准则:作用域越大,名字越长。在短作用域才使用简单名字。
- 可以使用 item_i, index_i 替代 i、j、k 。 使代码更有可读性。
最后小结:通过一些名称的梳理和总结,希望在今后的工作中起到一定的帮助作用,做到一点点有迹可循!
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21444,转载请注明出处。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21444,转载请注明出处。
评论0