本文将从大到小,从外到内总结Java编程中的命名约定。本文将涉及日常工作中常见的命名实例,如包命名、类命名、接口命名、方法命名、变量命名、常规类命名、抽象类命名、异常类命名、扩展类命名等。我将按照项目目录结构从包、类(接口、抽象类、异常类)、方法、变量、常量的顺序来介绍。
1. 包命名规范包的作用是将功能相似或相关的类或接口分组管理,便于类的定位和查找。同时,还可以使用包来避免类名冲突和访问控制,这使得代码更容易维护。通常,包用小写英文字母命名,并除以“.”,并且每个划分的单元只能包含一个名词。
一般包命名通常使用顶级域名作为前缀,如com、net、org、edu、gov、cn、io等。,后面是公司/组织/个人名称和功能模块名称。以下是包命名的一些示例:
package org . spring framework . boot . auto configure . cloud
package org . spring framework . boot . util
package org . hibernate . action
package com . Alibaba . druid
package com . Alibaba . druid . filter
package com . Alibaba . nacos . client . config
package com . ramostar . blog . web以下是
包Java . beans
包Java . io
包Java . lang
包Java . net
包Java . util
包javax.annotation 2 .类命名规范类通常由首字母大写的名词命名。如果一个类名包含两个以上的名词,建议用Camel-Case法写类名,每个名词的首字母也要大写。一般来说,类名的写法应该尽量简单,描述性强,所以不建议在写类名的时候使用缩写(一些习惯性的命名除外)。
比如国际化和本地化缩写为i18n,统一资源标识符为URI,数据访问对象为DAO,JSON Web Token为JWT,超文本标记语言为HTML等。).以下是一些常见的类命名示例:
公共类userdo {
}
类EmployeeService {
}
类student Dao {
}
类orderitem entity {
}
公共类userservice impl {
}
公共类orderitem controller {
[]
公共类HTMLEditorKit { 首先,接口是一个特殊的类,表示某一类对象的动作。简单来说,接口也是一个类(不那么严谨),所以接口名称的写法也要符合类名的规范,首字母要大写。与普通的类名不同,在命名接口时,通常使用形容词或动词来描述接口的动作。下面是Oracle Java中一些标准库用形容词命名接口的例子: 公共接口可关闭{ 公共接口after advice {[/Br/][/Br/]}[/Br/]公共接口targetclass aware {[/Br/][/Br/]}[/Br/]公共接口ApplicationContextAware {[/Br/][/Br/]}[/Br/]公共接口messagesourceresolvable {[/Br/][/Br/]}
}
公共抽象类HttpContext {
}
公共接口image observer {
}
Public ArrayIndexoutofBoundsException {
}
公共类enum thread . state {
}
}
公共接口可克隆{
}
公共接口可运行{
}
公共接口可比较& ltT & gt{
}
公共接口CompletionService & ltV & gt{
}
公共接口Iterable & ltT & gt{
}
公共接口事件侦听器{
}在Spring Framework标准库中,接口通常由名词+动词/形容词的组合来命名。以下是Spring框架中接口命名的一些例子:
抽象类是一个特殊的类,它的命名等同于普通类。一般为了区分抽象类和普通类、接口,提高抽象类的可读性,在命名抽象类时会使用“abstract”/“base”作为类名的前缀。以下是编程中的一些通用命名示例:
公共抽象类AbstractRepository & ltT & gt{
}
公共抽象类abstract controller {
}
公共抽象类BaseDao & ltt,ID & gt{
}
公共抽象类AbstractCommonService & ltT & gt{
}以下是Spring框架中抽象类的常见示例:
公共抽象类AbstractAspectJAdvice {
}
公共抽象类AbstractSingletonProxyFactoryBean {
}
公共抽象类abstractbeanforypointcutadvisor {
}
公共抽象类AbstractCachingConfiguration {
}
公共抽象类abstract contextload initializer {
]
异常类也是类的一种,但与普通的类命名不同,异常类需要使用“Exception”作为后缀。以下是异常类命名的常见示例:
公共类FileNotFoundException {
}
公共类useraldeyexistexception {
}
公共类transaction Exception {
}
公共类ClassNotFoundException {
}
公共类IllegalArgumentException {
}
这类异常类的名称以“Error”为后缀,以区别异常(代码、环境、操作等异常)。以下是命名系统异常(非检查异常)的示例:
公共抽象类VirtualMachineError {
}
公共类stackoverflowererror {
}
公共类out of memory error {
}
公共类IllegalAccessError {
}
公共类NoClassDefFoundError {
}
方法的命名法
命名一个方法时,它的首字母应该是小写的。如果方法签名由多个单词组成,则应该从第二个单词开始用驼峰命名来编写。一般在命名方法时,通常使用动词/动词+名词的组合。下面是一些常见的方法命名示例。
3.1表达式获取
如果使用一个方法来获取某个值,通常会以“get”为前缀,例如:
public String get username {
}
public List & lt;整数& gtGetids {
}
公共用户getone {
} 3.2表达式查询
如果一个方法需要通过查询或过滤来获取一些数据,通常使用“find”/“query”作为前缀,例如:
公共列表& lt用户& gtfindOne(Integer id){
}
public List & lt;整数& gtfind all {
}
公共分发名单& lt字符串& gt查询订单{
} 3.3表达式条件
如果一个方法需要一些条件参数,可以在方法名中使用“by”/“with”等字符作为条件的连接符,例如:
public User findby username(String username){
}
public List & lt;整数& gtgetUserIdsWithState(boolean state){
}
public List & lt;用户& gtDallbyusernameorderbyiddesc(字符串用户名){
} 3.4演示设置
如果一个方法是设置、插入、修改、删除等。,它应该用相应的动词(set、insert、update、delete)作为其名词的前缀,例如:
Public void set name(String name){
}
Public User insert(User User){
}
}
Public void clear all {
}3.5其他规范
如果用一种方法获得一组数据的长度或数量,则应以长度或大小命名;如果方法的返回值是Boolean,则该方法应带有前缀“is”或“has”;
如果使用方法将一种数据类型转换为另一种数据数字类型,可以使用“to”作为前缀。下面是一个综合的例子:
public long length {
}
public intsize {
}
public booleanisNotEmpty {
}
]public booleanhasLength {
}
public Set & lt;整数& gtmapet(mapmap){
}
public userd to convert to(user user user){
}
public string to string(object obj){
变量命名包括参数名、成员变量和局部变量。变量命名通常以小写字母开头。如果变量名由多个单词组成,第一个字母应该从第二个单词开始大写。在变量命名过程中,不建议使用“_”作为前缀或单词间的分隔符。以下是一些常见的变量命名示例:
私有字符串昵称;
私有字符串mobileNumber
私有长id;
私有字符串用户名;
private Long orderId;
private Long order itemid;5.常数命名法
一般常量的名字都是用大写的英文单词写的。如果常量的名称由多个单词组成,则这些单词会被“_”统一分开。以下是常量命名的一个示例:
public static final String log in _ USER _ SESSION _ KEY = " current _ log in _ USER ";
public static final int MAX _ AGE _ VALUE = 120;
public static final int DEFAULT _ PAGE _ NO = 1;
public static final long MAX _ PAGE _ SIZE = 1000;
public static final boolean HAS _ LICENSE = false;
public static final布尔值IS _ CHECKED = false6。枚举命名规范枚举(Enum)类是一个特殊的类,其命名规范遵循普通类的命名约束,首字母大写,采用驼峰命名法;枚举类中定义的值的名称遵循常量的命名约定,枚举值的名称需要在一定程度上与类名相关。以下是一些列举的例子:
公共枚举颜色{
红色、黄色、蓝色、绿色、白色。
}
public enum physical size {
TINY,SMALL,MEDIUM,LARGE,GIGANTIC。
}以下是Oracle Java标准库的一个示例:
public enum element TYPE {
TYPE,
字段,
方法,
参数,
构造函数,
LOCAL_VARIABLE,
ANNOTATION_TYPE,
PACKAGE,
TYPE_PARAMETER,
TYPE _ USE;
}7。其他命名约定7.1阵列
定义数组时,为了便于阅读,尽量保持以下编写规范:
int array = new int[10];
int idArray ={1,2,3,4,5 };
String nameArray = {"First "、" Yellow "、" Big " }
public List & lt;字符串& gtgetname byid(Integer[]ids){
}
public List & lt;字符串& gtGetbyid(整数...ids) {
} 7.2表示复数或集合
如果用一个变量来描述多条数据,尽量用复数形式来写,比如:
收藏& lt订单& gt订单;
int值;
List & lt;Item & gt物品;另外,如果你表达一个地图数据,你应该用“Map”作为它的后缀,例如:
地图& lt字符串,用户& gt用户地图;
Map & lt;字符串,列表& ltObject & gt& gtlistMap7.3通用类
编写泛型类时,通常要遵循以下约定:
公共类HashSet & ltE & gt扩展AbstractSet & ltE & gt{
}
public class HashMap & lt;k,V & gt扩展AbstractMap & ltk,V & gt{
}
公共类ThreadLocal & ltT & gt{
}
公共接口函子& ltt,X扩展Throwable & gt{
T val抛出X;
}
公共类容器& ltk,V & gt{
私钥;
私V值;
Container(K key,V value){
this . key = key;
this . value = value;
}
}
公共接口基本存储库& ltt,ID & gt{
T find byid(ID ID);
void update(T T);
List & lt;T & gtfindByIds(ID...ids);
}
公共静态& ltT & gt列表& ltT & gtmethod name(Class & lt;T & gtclz){
List & lt;T & gtdataList = getByClz(clz);
返回dataList
}7.4接口实现类
为方便阅读,一般情况下,建议接口实现类使用“impl作为后缀”,但不建议使用大写的“I”作为接口前缀。下面是一个接口和接口实现类的编写示例。
推荐写作:
公共接口orderservice {
}
公共类orderserviceimpl实现orderservice {
}不推荐:
公共接口iorder服务{
}
公共类订单服务实现iorder服务{
} 7.5测试类和测试方法
项目中,测试类采用待测业务模块名称/待测接口/待测类+“test”的方法编写,测试类中的测试函数采用“test”+用例operation _ state的组合编写,例如:
public类UserServiceTest {
Public voidtestfindbysusernameandpassword {
}
Public voidtestUsernameExist _ notExist {
}
Public Voidtedtdeletebyid _ isok {
}8扩展:速记Java开发中的各种O
最后通过一个表格和图表,快速梳理出Java中Bo、DTO、Dao、PO、POJO、VO的含义、区别和联系。
使用范围 | 解释 |
链接:www.ramostear.com/blog/2020/03/20/2vxdaqjq.html
#提交渠道#
让更多的人看到你的博客
如果你有在CSDN、博客园、掘金等平台写技术博客的习惯,想让自己的原创博客被更多人看到,可以贡献给Java后端。
Java backend鼓励读者提交个人技术博客、采访经验和教程。无论是入门的图文教程,还是通俗的技术讲解,只要你喜欢写作,欢迎投稿。
稿件的基本要求:
文章真的是个人原创作品,可以在其他非微信官方账号渠道发布,只要是个人原创。
建议稿件采用markdown格式,文中图片作为附件发送,要求图片清晰,语句通顺。
如果采用原稿件,我们会提供稿费和个人影响力曝光,根据文章阅读量和质量结算稿费。
提交渠道:
投稿请联系下方微信。注:提交原件。
△长按添加Java后端边肖