← Backend / Java

08_Java 变量命名规则

Java 局部变量、实例变量、静态变量、常量、参数、类名的命名规范

在 Java 中,不同类型的变量(例如实例变量、局部变量、静态变量等)有一些命名规则和约定。

遵循一些基本规则,这有助于提高代码的可读性和维护性。

以下是各种变量命名规则的概述:

  • 使用有意义的名字: 变量名应该具有清晰的含义,能够准确地反映变量的用途。避免使用单个字符或无意义的缩写。

  • 驼峰命名法(Camel Case): 在变量名中使用驼峰命名法,即将每个单词的首字母大写,除了第一个单词外,其余单词的首字母都采用大写形式。例如:myVariableName。

  • 避免关键字: 不要使用 Java 关键字(例如,class、int、boolean等)作为变量名。

  • 区分大小写: Java 是大小写敏感的,因此变量名中的大小写字母被视为不同的符号。例如,myVariable 和 myvariable 是两个不同的变量。

  • 不以数字开头: 变量名不能以数字开头,但可以包含数字。

  • 遵循命名约定: 对于不同类型的变量(局部变量、实例变量、静态变量等),可以采用不同的命名约定,例如使用前缀或后缀来区分。

局部变量

  • 使用驼峰命名法。
  • 应该以小写字母开头。
  • 变量名应该是描述性的,能够清晰地表示其用途。
int myLocalVariable;

实例变量(成员变量)

  • 使用驼峰命名法。
  • 应该以小写字母开头。
  • 变量名应该是描述性的,能够清晰地表示其用途。
private int myInstanceVariable;

静态变量(类变量)

  • 使用驼峰命名法,应该以小写字母开头。
  • 通常也可以使用大写蛇形命名法,全大写字母,单词之间用下划线分隔。
  • 变量名应该是描述性的,能够清晰地表示其用途。
// 使用驼峰命名法
public static int myStaticVariable;

// 使用大写蛇形命名法
public static final int MAX_SIZE = 100;

常量

  • 使用全大写字母,单词之间用下划线分隔。
  • 常量通常使用 final 修饰。
public static final double PI = 3.14;

参数

  • 使用驼峰命名法。
  • 应该以小写字母开头。
  • 参数名应该是描述性的,能够清晰地表示其用途。
public void myMethod(int myParameter) {
    // 方法体
}

类名

  • 使用驼峰命名法。
  • 应该以大写字母开头。
  • 类名应该是描述性的,能够清晰地表示其用途。
public class MyClass {
    // 类的成员和方法
}

接口名

  • 使用大写字母开头的驼峰命名法,与类名规则一致。
  • 现代 Java 命名规范更倾向于使用描述能力的名词,而非 I 前缀(旧式 C# 风格)。
// 推荐(描述能力)
public interface Runnable { ... }
public interface Serializable { ... }
public interface Comparable<T> { ... }

// 不推荐(IFoo 前缀是旧习惯)
public interface IAnimal { ... }

枚举名与枚举常量

  • 枚举类名:大写字母开头的驼峰命名法,通常是单数名词。
  • 枚举常量:全大写,单词间用下划线分隔。
public enum DayOfWeek {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public enum HttpStatus {
    OK(200), NOT_FOUND(404), INTERNAL_SERVER_ERROR(500);

    private final int code;
    HttpStatus(int code) { this.code = code; }
}

方法名

  • 使用小写字母开头的驼峰命名法(与局部变量相同)。
  • 通常以动词开头,清楚描述方法的行为。
// 动词 + 名词
public void sendEmail(String to) { ... }
public String getUserName() { ... }
public boolean isValid() { ... }          // 布尔值方法以 is/has/can 开头
public void calculateTotal() { ... }

// getter / setter 约定
private String name;
public String getName() { return name; }  // getXxx
public void setName(String name) { this.name = name; }  // setXxx

包名

  • 全部小写,单词间不用下划线(直接拼写),用点分层级。
  • 通常以公司域名倒序开头,确保唯一性。
// 规范格式:com.公司名.项目名.模块名
com.example.blog.controller
com.example.blog.service
com.example.blog.repository

// 不推荐
com.Example.Blog    // 有大写
com.example_blog    // 有下划线

命名规则速查

类型 命名风格 示例
类 / 接口 / 枚举 / Record 大驼峰(PascalCase) UserService, Runnable, DayOfWeek
方法 / 变量(局部、实例、参数) 小驼峰(camelCase) getUserName(), firstName
常量(static final) 全大写下划线 MAX_SIZE, HTTP_TIMEOUT
枚举常量 全大写下划线 MONDAY, NOT_FOUND
包名 全小写点分隔 com.example.blog.service