个人习惯的重要性
个人开发规范不仅仅是对团队以及项目维护有很大的帮助,其实对自己来说也是一个非常好的帮助,可以帮助自己理清思路,让自己有更强的逻辑能力,开发效率upup!!
- 【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。
反例:String key = “Id#taobao_” + tradeId;
cache.put(key, value); - 【强制】long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容易跟数字 1 混
淆,造成误解,在代码中,最好使用包装类,也就是Long,Integer等。
说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2? - 【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。下面
正例中的数字就是延伸信息,表示星期几。
正例:public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6),
SUNDAY(7);} - 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果
是非空代码块则:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。 - 【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见
第 5 条下方正例提示。
反例:if (空格 a == b 空格) - 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
- 【强制】注释的双斜线与注释内容之间有且仅有一个空格。
正例:// 注释内容,注意在//和注释内容之间有一个空格。
OOP规约
- 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成
本,直接用类名来访问即可。 - 【强制】所有的覆写方法,必须加@Override 注解。
说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override
可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编
译报错。 - 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object。
说明:可变参数必须放置在参数列表的最后。(提倡同学们尽量不用可变参数编程)
正例:public User getUsers(String type, Integer… ids) {…} - 【强制】不能使用过时的类或方法。
说明:java.net.URLDecoder 中的方法 decode(String encodeStr) 这个方法已经过时,应
该使用双参数 decode(String source, String encode)。接口提供方既然明确是过时接口,
那么有义务同时提供新的接口;作为调用方来说,有义务去考证过时方法的新实现是什么。 - 【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用
equals。
正例:”test”.equals(object);
反例:object.equals(“test”);
说明:推荐使用 java.util.Objects#equals(JDK7 引入的工具类) - 【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在
IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行
判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,
推荐使用 equals 方法进行判断。
- 本文作者: Cayden
- 本文链接: http://example.com/2019/07/10/开发规范2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!