阿里巴巴对Java编程【常量定义】的规约
转载自 阿里巴巴对Java编程【常量定义】的规约
常量定义
1. 【强制】不允许任何魔法值 ( 即未经定义的常量 ) 直接出现在代码中。
反例: String key = " Id # taobao _" + tradeId;
cache . put(key , value);
2. 【强制】 long 或者 Long 初始赋值时,使用大写的 L ,不能是小写的 l ,小写容易跟数字 1 混淆,造成误解。
说明: Long a = 2 l; 写的是数字的 21,还是 Long 型的 2?
3. 【推荐】不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护。
说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。
正例:缓存相关常量放在类 CacheConsts 下 ; 系统配置相关常量放在类 ConfigConsts 下。
4. 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
1 ) 跨应用共享常量:放置在二方库中,通常是 client . jar 中的 constant 目录下。
2 ) 应用内共享常量:放置在一方库中,通常是 modules 中的 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 定义。
5. 【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。下面正例中的数字就是延伸信息,表示星期几。
正例: public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6),SUNDAY(7);}
阿里巴巴对Java编程【常量定义】的规约相关推荐
- 阿里巴巴对Java编程【OOP规约】的规约
转载自 阿里巴巴对Java编程[OOP规约]的规约 OOP规约 1. [强制]避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可. 2. [强制]所有的 ...
- 阿里巴巴对Java编程【命名风格】的规约
转载自 阿里巴巴对Java编程[命名风格]的规约 命名风格 1. [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / $Obje ...
- 阿里巴巴对Java编程【应用结构】的规约
转载自 阿里巴巴对Java编程[应用结构]的规约 应用分层 1. [推荐]图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web 层,也可以直接依赖于 Service 层,依此 ...
- 阿里巴巴对Java编程【Mysql】的规约
转载自 阿里巴巴对Java编程[Mysql]的规约 建表规约 1. [强制]表达是与否概念的字段,必须使用 is _ xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 ...
- 阿里巴巴对Java编程【控制语句】的规约
转载自 阿里巴巴对Java编程[控制语句]的规约 控制语句 1. [强制]在一个 switch 块内,每个 case 要么通过 break / return 等来终止,要么注释说明程序将继续执行到哪一 ...
- 阿里巴巴对Java编程【并发处理】的规约
转载自 阿里巴巴对Java编程[并发处理]的规约 并发处理 1. [强制]获取单例对象需要保证线程安全,其中的方法也要保证线程安全. 说明:资源驱动类.工具类.单例工厂类都需要注意. 2. [强制]创 ...
- 阿里巴巴对Java编程【集合处理】的规约
转载自 阿里巴巴对Java编程[集合处理]的规约 集合处理 1. [强制]关于 hashCode 和 equals 的处理,遵循如下规则: 1) 只要重写 equals ,就必须重写 hashCode ...
- 阿里巴巴对Java编程【代码格式】的规约
转载自 阿里巴巴对Java编程[代码格式]的规约 代码格式 1. [强制]大括号的使用约定.如果是大括号内为空,则简洁地写成{}即可,不需要换行 : 如果是非空代码块则: 1 ) 左大括号前不换行. ...
- 阿里巴巴对Java编程【异常处理】的规约
转载自 阿里巴巴对Java编程[异常处理]的规约 异常处理 1. [强制] Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该通过 catch 来处理,比 ...
最新文章
- 如何让Git适应敏捷开发流程?
- 快速生成apk 自动发布到网站 便于测试
- .NET 开发环境中使用VSN版本控制
- Git使用教程之本地仓库的基本操作
- 关于kali相关的参考文章
- 设计模式=相似模式区别
- 《系统集成项目管理工程师》必背100个知识点-40缩短活动工期的措施
- Python(5)-注释
- JPA基本注解的使用
- JS中如何判断null
- Xcode多Build Configurations环境下使用Reveal
- Sutherland-Hodgeman多边形裁剪
- Atitit ide之道 开发工具之道 attilax著 v2 s22.docx Atitit ide开发工具之道 attilax总结 1. 代码编辑器功能	3 1.1. 关键词颜色 	3 1.2.
- c 计算机操作步进器,雷赛_数字步进电机与驱动器_DM2C-RS556型号
- excel怎么设置打印区域_淘宝卖家想要打印快递单怎么设置
- 输入输入是否为回文(如“abcba”和”123321”都是回文)。(c语言)
- 刘德华--5难忘长发飘飘
- 143_iOS干货50_认识几个概念:跨域问题和内网穿透
- [二分]Kayaking Trip
- native数据类型 react_react-native中使用realm数据库
热门文章
- [PAT乙级]1046 划拳
- [Java基础]并发修改异常
- Excel使用技巧,补充中。。。
- autohotkey php,Autohotkey+php实现免浏览器听录音
- undefined reference to Mat_VarCreate'
- HDU 6833 A Very Easy Math Problem
- 牛客挑战赛30 C 小G砍树 换根dp+组合
- Alice and Bob
- G - Caesar Cipher Gym - 102798G
- Three Bags CodeForces - 1467C