Java开发编程规范: 2.常量定义
- 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
反例:
String key = "Id#taobao_" + tradeId;
cache.put(key, value);
- 【强制】在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。
说明:
Long a = 2l; 写的是数字的 21,还是 Long 型的 2?
- 【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
说明:
大而全的常量类,杂乱无章,使用查找功能才能定位到修改的常量,不利于理解和维护。
正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 ConfigConsts 下。
- 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
1)跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
2) 应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。
反例:
易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量:
类 A 中:public static final String YES = "yes";
类 B 中:public static final String YES = "y";
A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
3) 子工程内部共享常量:即在当前子工程的 constant 目录下。
4) 包内共享常量:即在当前包下单独的 constant 目录下。
5) 类内共享常量:直接在类内部 private static final 定义。
- 【推荐】如果变量值仅在一个固定范围内变化用 enum 类型来定义。
说明:
如果存在名称之外的延伸属性应使用 enum 类型,下面正例中的数字就是延伸信息,表示一年中的第几个季节。
正例:public enum SeasonEnum {
SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4);
private int seq;
SeasonEnum(int seq){
this.seq = seq;
}
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 一天一大 leet(最接近的三数之和)难度:中等 DAY-24
- Django渲染模板
- 一天一大 leet(移除重复节点)难度:简单 DAY-26
- Spring Boot 项目瘦身指南,瘦到不可思议!
- BigData--Hadoop数据压缩
- 面试官问我什么是JMM
- django+nginx+gunicorn部署配置
- JVM的YGC,这次被它搞惨了!
- ubuntu修复linux和windows双系统下挂载ntfs硬盘出错问题
- 一天一大 leet(长度最小的子数组)难度:中等 DAY-28
- Qt音视频开发24-ffmpeg音视频同步
- django使用django-crontab实现定时任务
- 一天一大 leet
- git使用经验
- 最长重复子数组 (难度:中等)-Day20200701