一、为什么需要命名规范?
命名规范就像代码的"身份证",好的命名可以:
- 提高代码可读性(见名知意)
- 降低维护成本
- 减少团队协作中的歧义
- 提升代码专业性
二、核心命名规则
1. 包名(Packages)
- 规则:全小写,采用反向域名格式
- 示例:
com.example.demo.controller org.springframework.boot
2. 类名(Classes)
- 规则:大驼峰命名法(首字母大写)
- 示例:
UserService.java OrderController.java
3. 方法名(Methods)
- 规则:小驼峰命名法(首字母小写)
- 示例:
getUserById() saveOrder()
4. 变量名(Variables)
- 规则:小驼峰命名法
- 示例:
int userId; String userName;
5. 常量(Constants)
- 规则:全大写,下划线分隔
- 示例:
public static final int MAX_COUNT = 100;
三、特殊场景命名
1. 接口(Interfaces)
- 规则:通常以
able
或ible
结尾 - 示例:
Serializable.java Comparable.java
2. 枚举(Enums)
- 规则:单数形式,大驼峰
- 示例:
enum DayOfWeek { MONDAY, TUESDAY }
3. 注解(Annotations)
- 规则:名词或形容词,大驼峰
- 示例:
@RequestMapping @Configuration
四、项目结构规范
1. 标准目录结构
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ ├── controller/
│ │ ├── service/
│ │ └── entity/
│ └── resources/
│ ├── application.properties
│ └── static/
└── test/
└── java/
└── com/
└── example/
└── demo/
└── DemoApplicationTests.java
2. 配置文件命名
application.properties # 主配置文件
application-dev.properties # 开发环境配置
application-prod.properties # 生产环境配置
五、常见反模式(Bad Practices)
1. 错误示例
// 包名包含大写
com.Example.Project
// 类名使用下划线
user_service.java
// 方法名使用拼音
xiuGaiUser()
// 常量使用驼峰
maxCount = 100
2. 正确示例
// 包名全小写
com.example.project
// 类名大驼峰
UserService.java
// 方法名动词开头
updateUser()
// 常量全大写
MAX_COUNT = 100
六、工具推荐
-
IDE内置检查:
- IntelliJ IDEA:File > Settings > Editor > Inspections > Java命名规范
- Eclipse:Window > Preferences > Java > Code Style > Code Conventions
-
代码分析工具:
<!-- Checkstyle配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.1.0</version> </plugin>
七、总结
遵循命名规范可以让代码更具"自解释性",推荐遵循以下优先级:
- 清晰性 > 简洁性
- 避免使用缩写(除非是广泛接受的)
- 保持项目内命名一致性
通过本文的学习,你已经掌握了Java命名规范的核心原则。建议在日常开发中:
- 建立团队内部命名规范文档
- 使用IDE的自动格式化功能
- 定期进行代码审查
Java命名规范10条黄金法则
-
禁止特殊符号开头/结尾
所有命名(包、类、方法、变量)均不能以下划线_
或美元符号$
开头或结尾。 -
杜绝拼音混合命名
命名必须使用纯英文,禁止拼音与英文混用(如getXueShengName()
),更不允许直接使用中文。 -
类名大驼峰
类名使用UpperCamelCase
,如UserService
、OrderController
。例外:领域模型类(如UserDO
、OrderDTO
)。 -
方法/变量小驼峰
方法名、参数名、变量名使用lowerCamelCase
,如getUser()
、studentAge
。 -
常量全大写+下划线
常量命名为ALL_CAPS_WITH_UNDERSCORES
,如MAX_RETRY_COUNT
。 -
抽象类/异常类/测试类命名
- 抽象类以
Abstract
或Base
开头(如AbstractDao
)。 - 异常类以
Exception
结尾(如BusinessException
)。 - 测试类以被测试类名开头+
Test
结尾(如UserServiceTest
)。
- 抽象类以
-
包名全小写+反向域名
包名格式为com.公司名.项目名.模块名
,如com.example.demo.controller
。 -
布尔变量禁用
is
前缀
POJO类的布尔变量不要用is
开头(如避免isSuccess
,改用success
),防止序列化问题。 -
接口与实现类命名
- 接口名建议以
able
/ible
结尾(如Serializable
)。 - 实现类以接口名+
Impl
结尾(如UserServiceImpl
)。
- 接口名建议以
-
杜绝无意义缩写
命名需清晰表意,避免模糊缩写(如用condition
而非condi
)。
如果需要进一步了解具体实现或工具推荐,可以随时告诉我! 😊
坚持良好的命名习惯,你的代码将更易读、更健壮! 🚀