首页 > 编程语言 >Java 命名规范

Java 命名规范

时间:2023-06-10 10:55:33浏览次数:73  
标签:Java package abstract 规范 public interface 命名 class

包命名规范

包(Package) 的作用是将功能相似或相关的类或者接口进行分组管理,便于类的定位和查找,同时也可以使用包来避免类名的冲突和访问控制,使代码更容易维护。通常,包名使用小写英文字母进行命名,并使用 “.” 进行分割,每个被分割的单元只能包含一个 名词

一般地,包命名常采用顶级域名作为前缀,例如 com,net,org,edu,gov,cn,io 等,随后紧跟公司/组织/个人名称以及功能模块名称。下面是一些包命名示例:

package org.springframework.boot.autoconfigure.cloud
package org.springframework.boot.util

package org.hibernate.action
package org.hibernate.cfg

package com.alibaba.druid
package com.alibaba.druid.filter
package com.alibaba.nacos.client.config

package com.ramostear.blog.web

下面是 Oracle Java 的一些常见包命名例子:

package java.beans
package java.io
package java.lang
package java.net
package java.util

package javax.annotation

类命名规范

类(Class) 通常采用 名词 进行命名,且 首字母大写,如果一个类名包含两个以上名词,建议使用 驼峰命名(Camel-Case) 法书写类名, 每个名词 首字母也应该大写。一般地,类名的书写尽量使其保持简单和描述的完整性,因此在书写类名时不建议使用缩写(一些约定俗成的命名除外)。

例如 Internationalization and Localization 缩写成 i18n, Uniform Resource Identifier 缩写成 URI,Data Access Object 缩写成 DAO,JSON Web Token 缩写成 JWT,HyperText Markup Language 缩写成 HTML 等等。下列是一些常见的类命名示例:

class EmployeeService {
}
class StudentDAO {
}
class OrderItemEntity {
}

public class UserDTO {
}
public class UserServiceImpl {
}
public class OrderItemController {
}

下面是 Oracle Java 中的一些标准命名示例:

public class HTMLEditorKit {
}
public class ArrayIndexOutOfBoundsException {
}
public class enum Thread.State {
}

public abstract class HttpContext {
}
public interface ImageObserver {
}

接口命名规范

首先,接口(Interface) 是一种表述某一类型对象 动作 的特殊类;简单来说,接口也是类(不太严谨),所以,接口的名称的书写也应该符合类名书写规范,首字母应该大写,与普通类名不同的是,接口命名时通常采用 形容词动词 来描述接口的 动作行为。下列是 Oracle Java 中一些标准库的接口使用 形容词 命名示例:

public interface Closeable {
}
public interface Cloneable {
}
public interface Runnable {
}
public interface Comparable<T> {
}
public interface CompletionService<V> {
}
public interface Iterable<T> {
}
public interface EventListener {
}

在 Spring Framework 标准库中,通常采用 名词 + 动词/形容词 的组合方式来命名接口,下列是 Spring Framework 中一些接口命名示例:

public interface AfterAdvice {
}
public interface TargetClassAware {
}
public interface ApplicationContextAware {
}
public interface MessageSourceResolvable {   
}

抽象类命名规范

抽象类(Abstract Class) 是一种特殊的类,其命名与普通类的命名规范相当。一般地,为了将抽象类与普通类和接口做出区别,提高抽象类的可读性,在命名抽象类时,会以 “Abstract” / “Base” 作为类名的前缀。下面是编程中一些常规的命名示例:

public abstract class AbstractRepository<T> {
}
public abstract class AbstractController {
}
public abstract class BaseDao<T,ID> {
}
public abstract class AbstractCommonService<T> {
}

以下是 Spring Framework 中常见的抽象类示例:

public abstract class AbstractAspectJAdvice {
}
public abstract class AbstractSingletonProxyFactoryBean {
}
public abstract class AbstractBeanFactoryPointcutAdvisor {
}
public abstract class AbstractCachingConfiguration {
}
public abstract class AbstractContextLoaderInitializer {
}

异常类命名规范

异常类(Exception Class) 也是类的一种,但与普通类命名不同的是,异常类在命名时需要使用 “Exception” 作为其 后缀。下面是常见的异常类命名示例:

public class FileNotFoundException {
}
public class UserAlreadyExistException {
}
public class TransactionException {
}
public class ClassNotFoundException {
}
public class IllegalArgumentException {
}
public class IndexOutOfBoundsException {
}

另外,在 Java 中还有另外一类异常类,它们属于系统异常,这一类异常类的命名使用 “Error” 作为其 后缀,以区分 Exception(编码,环境,操作等异常)。下面是系统异常(非检查异常) 的命名示例:

public abstract class VirtualMachineError {
}

public class StackOverflowError {
}
public class OutOfMemoryError {
}
public class IllegalAccessError {
}
public class NoClassDefFoundError {
}
public class NoSuchFieldError {
}
public class NoSuchMethodError {
}

方法命名规范

方法(Method) 命名时, 其 首字母应该小写,如果方法签名由多个单词组成,则从第二个单词起,使用驼峰命名法进行书写。一般地,在对方法进行命名时,通常采用 动词 + 名词 的组合,下面是方法命名的一些常见示例。

表述获取

如果一个方法用于获取某个值,通常使用 “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() {
}

其他规范

标签:Java,package,abstract,规范,public,interface,命名,class
From: https://www.cnblogs.com/BNTang/p/17470897.html

相关文章

  • JAVA的springboot+vue家政服务管理平台,家政预约管理系统,附源码+数据库+论文+PPT
    1、项目介绍随着家政服务行业的不断发展,家政服务在现实生活中的使用和普及,家政服务行业成为近年内出现的一个新行业,并且能够成为大众广为认可和接受的行为和选择。设计家政服务管理平台的目的就是借助计算机让复杂的销售操作变简单,变高效。家政服务管理平台采用了B/S结构,JAVA作......
  • JAVA——包装类及Integer的成员方法
    JAVA——包装类及Integer的成员方法用一个对象,把基本类型给包起来基本数据类型对应的对象byte->Byteshort->Shortchar->Characterint->Integerlong->Longfloat->Floatdouble->Doubleboolean->Boolean细节:因为在实际开发中,-128-127之间的数据,用的比较......
  • java 基础面试笔记(一)
    1、对final和static的理解final修饰变量,变量不可修改;final修饰类,类不可继承;final修饰方法,方法不能重写;static方法,不依赖任何对象可以访问;static成员变量初始化顺序按照定义的顺序进行初始化:· 父类静态变量· 父类静态代码块· 子类静态变量· 子类静态代码块· 父类普通变量......
  • JavaWeb准备工作和环境配置
    JavaWeb基本概念web开发:web:网页的意思静态web:提供的数据资源不会发生改变动态web:数据是不断变化的,现代网站几乎都是动态网站技术栈:Servlet/JSP:基于java,主推B/S架构,可以​承载高并发,语法类似ASP​ ASP:微软,国内早期流行。在html中嵌入VB脚本,c#​......
  • 大数据学习笔记hadoop、hive、java
    HDFS伪分布式集群搭建tar-zxvfhadoop-2.7.7.tar.gzecho$JAVA_HOME/root/software/jdk1.8.0_221​#查看loaclhostvim/root/software/hadoop-2.7.7/etc/hadoop/hadoop-env.sh​​vim/root/software/hadoop-2.7.7/etc/hadoop/core-site.xml​​<property><name>fs.defaultFS&......
  • java集成chatGpt完整案例代码(效果和官网一样逐字输出)
    背景要集成chatGpt参考我上一篇文章即可。但是,如果要实现官网一样的效果,逐字输出,难度就提升了不少了。经过在官网的研究发现它应该是采用了SSE技术,这是一种最新的HTTP交互技术。SSE(Server-SentEvents):通俗解释起来就是一种基于HTTP的,以流的形式由服务端持续向客户端发送数据的......
  • Java内存分析
    一、Java内存分区java内存分区****方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。****堆java堆是所有线程所共享的一块内存,在虚拟机启动时创建,几乎所有的对象实例都在这里创建,因此该区域经常发生垃圾回收操作。****虚拟机栈......
  • Java对象中转换空值的字段
    在后端返回数据给前端时,公司的框架会把值为null的数据去掉,方便前端取值。如:Person对象为:{name:"浩二",age:24,weight:null,height:114},那返回给前端的就为{name:"浩二",age:24,height:114}。如果这个时候有个需求: Integer类型的字段为null给-1 Long类型的字段为null......
  • 大家都说Java有三种创建线程的方式!并发编程中的惊天骗局!
    在Java中,创建线程是一项非常重要的任务。线程是一种轻量级的子进程,可以并行执行,使得程序的执行效率得到提高。Java提供了多种方式来创建线程,但许多人都认为Java有三种创建线程的方式,它们分别是继承Thread类、实现Runnable接口和使用线程池。但是,你们知道吗?其实在创建线程的过程中......
  • JavaScript 构造器模式:创建可重用的对象
    前言JavaScript是一种基于对象的语言,对象是JavaScript中最重要的概念之一。在JavaScript中,我们可以使用构造器模式来创建可重用的对象。本文将介绍JavaScript构造器模式的概念、用法和实例,并给出博客标题《JavaScript构造器模式:创建可重用的对象》。构造器模式构造器模......