Skip to content

标识符命名规则

标识符是用于命名程序元素(类、方法、变量等)的名称。

基本规则

  1. 由字母、数字、下划线(_)、美元符号($)组成
  2. 不能以数字开头
  3. 不能使用 Java 关键字
  4. 区分大小写
java
// 合法标识符
String name = "Java";
int _private = 1;
double $price = 99.9;
int age2 = 25;

// 非法标识符
// int 2name = 1;      // 不能以数字开头
// int class = 1;      // 不能使用关键字
// int age-var = 1;    // 不能使用减号

Java 关键字

以下为 Java 保留的关键字,不能用作标识符:

类别关键字
基本类型byte, short, int, long, float, double, boolean, char
访问修饰符public, protected, private
类相关class, interface, enum, extends, implements
方法相关void, return
控制流程if, else, switch, case, default, for, do, while, break, continue
异常处理try, catch, finally, throw, throws
修饰符static, final, abstract, synchronized, transient, volatile, native
对象相关new, this, super, instanceof
包相关package, import
其他true, false, null, assert, strictfp

命名规范

命名法

命名法规则示例
PascalCase每个单词首字母大写UserName, OrderService
camelCase第一个单词小写,后续单词首字母大写userName, orderService
snake_case单词之间用下划线分隔(不推荐)user_name
SCREAMING_SNAKE全大写,单词间下划线MAX_SIZE, DEFAULT_NAME

各元素的命名规范

元素命名法示例
类名PascalCaseUser, OrderService, AccountDao
接口名PascalCase(可加 I 前缀)UserService, IUserService
方法名camelCasegetUserById, calculateTotal
变量名camelCaseuserName, orderList
常量SCREAMING_SNAKEMAX_RETRY, DEFAULT_PAGE_SIZE
包名全小写com.example.service
枚举值大写下划线或 PascalCaseSUCCESS, Running

命名示例

java
// 正确
public class UserService { }
public class OrderController { }
public class UserRepository { }
public class Constants { }

// 错误
public class userService { }  // 应该用 PascalCase
public class USER_SERVICE { }  // 类名不能用大写下划线

方法

java
public class UserService {
    
    // 正确:描述性强
    public User findById(Long id) { }
    public List<User> findAllUsers() { }
    public void saveUser(User user) { }
    public boolean validatePassword(String password) { }
    
    // 错误:过于简单或不符合规范
    public User find(Long id) { }      // find 什么?
    public List getUsers() { }          // 应该用 findAll
    public void save(Object obj) { }    // 参数类型不明确
}

变量

java
public class User {
    // 正确:简洁明了
    private String name;
    private int age;
    private boolean active;
    private List<Order> orders;
    
    // 错误:过于简单或使用缩写
    private String n;           // 什么 n?
    private int a;              // 什么 a?
    private boolean b;          // 什么 b?
}

常量

java
public class Constants {
    // 正确:大写下划线,命名清晰
    public static final int MAX_RETRY_COUNT = 3;
    public static final int DEFAULT_PAGE_SIZE = 20;
    public static final String DEFAULT_CHARSET = "UTF-8";
    public static final BigDecimal MIN_AMOUNT = BigDecimal.ZERO;
    
    // 错误:不符合常量命名规范
    public static final int maxRetryCount = 3;    // 应该大写
    public static final int default_page_size = 20;  // 应该用 SCREAMING_SNAKE
}

布尔变量

java
// 正确:使用 is/has/can/should 前缀
private boolean isActive;
private boolean hasPermission;
private boolean canEdit;
private boolean shouldUpdate;

// 正确:使用 be 动词或形容词
private boolean available;
private boolean visible;
private boolean married;

// 错误:不用匈牙利命名法
private boolean bActive;
private boolean flagActive;

最佳实践

见名知意

java
// 正确
int userAge;
String userEmail;
List<Order> pendingOrders;

// 错误
int a;
String s;
List l;

避免缩写

java
// 正确
int numberOfUsers;
String customerName;
boolean isAuthenticated;

// 错误
int numUsers;
String custName;
boolean isAuth;

保持一致性

java
// 正确:命名风格一致
private String firstName;
private String lastName;
private String emailAddress;

// 错误:风格不一致
private String firstName;
private String last_name;    // 混用命名法
private String Email;       // 大小写不一致

集合命名

java
// 正确:使用复数或 List/Set/Map 后缀
List<User> users;
Set<Order> orderSet;
Map<String, User> userMap;

// 错误
List userList;      // 冗余
Map userHashMap;    // 冗余

特殊命名

接口命名

java
// 方式一:直接命名(推荐)
public interface UserService { }
public interface Repository { }

// 方式二:I 前缀(部分公司使用)
public interface IUserService { }

异常类命名

java
// 以 Exception 结尾
public class UserNotFoundException { }
public class InvalidParameterException { }
public class BusinessException { }

测试类命名

java
// 以 Test 结尾
public class UserServiceTest { }
public class OrderControllerTest { }

// 或以 Tests 结尾
public class UserServiceTests { }

基于 VitePress 构建