Java编程规范-命名规范

news/2025/1/13 21:26:09/文章来源:https://www.cnblogs.com/aeolian/p/18668686

命名风格

抽象类/异常类/测试类

抽象类命名使用 AbstractBase 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。

数组

中括号是数组类型的一部分,数组定义如下:String[] args
反例: 使用 String args[] 的方式来定义。

POJO属性类不要加is

POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。
反例: 定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。

包名单数

包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考 spring 的框架结构)

望文知义

杜绝完全不规范的缩写,避免望文不知义。
反例: AbstractClass “缩写”命名成 AbsClasscondition “缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。

设计模式

如果使用到了设计模式,建议在类名中体现出具体模式。 将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。
正例:

public class OrderFactory;
public class LoginProxy;
public class ResourceObserver;

接口属性方法

接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
正例: 接口方法签名:void f();
接口基础常量表示:String COMPANY = "alibaba";
反例: 接口方法定义:public abstract void f();
说明: JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默认实现。

接口和实现类的两套命名规则

1) 【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。
正例: CacheServiceImpl 实现 CacheService 接口。
2) 【推荐】如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able 的形式)。
正例: AbstractTranslator 实现 Translatable

枚举

枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明: 枚举其实就是特殊的常量类,且构造方法被默认强制是私有。
正例: 枚举名字:DealStatusEnum,成员名称:SUCCESS / UNKOWN_REASON

Service/DAO层方法命名规约

1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save(推荐)或 insert 做前缀。
5) 删除的方法用 remove(推荐)或 delete 做前缀。
6) 修改的方法用 update 做前缀。

领域模型命名规约

具体参考
1) 数据对象:xxxDOxxx 即为数据表名。
2) 数据传输对象:xxxDTOxxx 为业务领域相关的名称。
3) 展示对象:xxxVOxxx 一般为网页名称。
4) POJODO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/868714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go序列化库--msgpack

简介 msgpack是一个基于二进制高效的对象序列化类库,可用于跨语言通信。 它可以像JSON那样,在许多种语言之间交换结构对象。 但是它比JSON更快速也更轻巧。 支持Python、Ruby、Java、C/C++、Go等众多语言。 宣称比Google Protocol Buffers还要快4倍。官方的说法它像 JSON, 但…

图灵完备游戏介绍

怎么从软件到硬件 这个问题对于我来说很难理解。即使我本身是程序员,即使看了很多科普视频,但仍然不知道。硬件是不可变的,软件是多变的,怎么用不变实现变化? 我偶然间看了系统推荐的游戏视频,发现了这个游戏。于是就趁着无聊玩了下。这个游戏展现了怎么从硬件到软件。逻…

推荐4款基于.NET开源、功能强大的CMS建站系统

前言 CMS系统作为一种强大的内容管理工具,在数字化时代发挥着越来越重要的作用。无论是个人博客还是大型企业官网,选择一个合适的CMS都能极大地提高效率和用户体验。今天大姚给大家推荐4款基于.NET开源、免费、功能强大的CMS建站系统,希望可以帮助到有需要的同学。 SSCMS SS…

DVWA靶场CSP Bypass (漏洞绕过) 漏洞通关及源码审计

CSP Bypass CSP Bypass(Content Security Policy Bypass)漏洞涉及的是绕过网站部署的内容安全策略(Content Security Policy,CSP)限制,从而执行潜在的恶意操作。CSP 是一种安全机制,用于防止跨站脚本(XSS)、数据注入攻击等。其通过限制网页能够加载和执行的内容来源…

为你的Blazor程序加入本地化多语言功能

本地化 本地化是为给定语言和地区定制应用程序的过程. BootstrapBlazor 组件允许您将其 UI 元素转换为所需的语言。这包括按钮、过滤器操作符属性等文本。组件内部默认使用当前请求 UI 文化语言,本文将向您展示如何在应用程序中使用此功能: BootstrapBlazor 组件库 简介 Boot…

2024ICPC(香港)游记

转自MyBlog 虽然2025了再写好像有点迟就是了。 day -180? 大一xdx太nb导致的,本来预估网络赛400有两场,600校内出线,结果被xdx搞成网络赛200有两场,400校内出线。632遗憾退场。 day -100? 老师给南京站争取了一个外卡,可惜20分罚时之差给了我们前一队。这么说去年邀请赛…

AVL树的插入

关于AVL树的插入,其实是一个比较复杂的问题,主要是在于他对于“旋转”这一概念,对于这一概念其实我感觉很多博主讲的都不是很明白,包括CHATGPT,也试了,但是也没有比较清楚的解释,他们主要集中在一种比较简单的情况,即没有任何子树的情况,如下所示 ​​ 对于这种最基本…

【事件分析】20250112-Usual 赎回机制调整事件

背景信息 https://docs.usual.money/ Usual 是一个聚合 RWA 的稳定币发行协议,经济模型中存在三种代币:USD0:Usual 发行的稳定币。 USD0++:USD0++ 是 USD0 的质押版本,为期4年,可获得 USUAL 代币奖励。 USUAL:Usual 协议的治理代币。事发缘由 https://usual.money/blog/…

痞子衡嵌入式:我评上了2024年度电子星球(eestar)最强大脑

今天收到了「电源网旗下电子星球」 颁发的 2024 年度最强大脑奖牌,这是电子星球第二年给痞子衡颁奖了。这个奖牌设计得非常用心,区别于去年奖牌只能捧在手上,今年痞子衡可以把奖牌挂脖子上出去拉风了。从23年8月开始,电子星球小编每个工作日会转发一篇痞子衡的技术原创文章…

React源码解析(1): JSX语法与react项目渲染过程

好家伙0.前言 由于工作的需要,我不得不入手了react的全家桶,曾经我的主要技术栈是vue。 从vue转到react,一开始我感到非常不适应,jsx的语法的不了解,react hooks的使用方式,react路由的配置。。。这一度让我十分难受 但在熟悉一段时间后,我逐渐领略到react的魅力,灵活的…

痞子衡嵌入式:我拿到了2024年度电子星球(eestar)最强大脑

今天收到了「电源网旗下电子星球」 颁发的 2024 年度最强大脑奖牌,这是电子星球第二年给痞子衡颁奖了。这个奖牌设计得非常用心,区别于去年奖牌只能捧在手上,今年痞子衡可以把奖牌挂脖子上出去拉风了。从23年8月开始,电子星球小编每个工作日会转发一篇痞子衡的技术原创文章…

使用嗅探大师(sniff master)进行手机端iOS抓包的配置步骤

一个强大的iOS端抓包工具,嗅探大师(sniff master),比市面上的一些抓包工具操作更简单。之前做网页端开发的时候找到一个抓包工具,嗅探大师,当时用来在Windows上面进行抓包,发现他在手机端iOS方面的抓包更为强大,而且还有HTTPS暴力抓包,无需设置代理,无需越狱,无需ro…