-
Notifications
You must be signed in to change notification settings - Fork 0
java guides
雷霹雳的爸爸 edited this page Jul 30, 2018
·
10 revisions
以阿里巴巴开发手册1.4.0版本为蓝本,
以阿里的开发手册1.4版(以下简称手册)中的编程规约和异常日志部分为蓝本及基础,并结合其他较为知名的guidelines及组织自身特点,形成一下文本
如果遵循阿里开发手册中的意见(page 1-22),这里不再特别列出,以下,仅记录对手册的修改和补充部分
原文:
【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例:name / name / $name / name / name$ / name
说明:
- 按说这个规则应该是没有争议的,拎出来是内部讨论时候有提到下划线是可能会被用到的,所以这里需要进行补充说明
- 美元符号实际上已经认为是内部类等系统内部使用了
- 下划线有很大一部分是源于其他语言,比如python,在java中不适用
- 还有一个原因是代码生成工具他们识别下划线来生成类似setter或getter这类的代码,java世界没有这种社区习惯
原文:
【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
修改为:
- 【强制】类名使用UpperCamelCase风格,遇到缩写和不常见结构体时,遵循google java style guides中规则
说明:
- 阿里这条比较拧巴,为什么TCP UDP就要按驼峰而这些例外不要?豁免权的来源完全搞不清楚,估计是内部对现状的妥协,这么写实际上是在违反一致性原则,如果真是遗留代码的问题,应当给一个对旧代码的整体例外约束比较好
原文:
【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无 内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。
说明:
String str = "a,b,c,,"; String[] ary = str.split(","); // 预期大于 3,结果是 3 System.out.println(ary.length);
补充:
- 【推荐】如果允许split结果数组中有空字符串,那么可以使用split(regex,-1)来进行切分
说明:
- 手册说的很对,但是一般对返回是数组的处理,应该都是循环迭代才对,所以可能真的抛出IndexOutOfBoundsException的可能性不大,也就是不会直接去操作数组下标,也就是可能压根都不报错,反倒会有一些奇怪的问题发生
原文:
【推荐】当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起, 便于阅读,此条规则优先于第 16 条规则。
补充:
- 重载方法的顺序按照参数的名字和数量依次排列,名字按字母升序,数量按倒序
说明:
- 要求按顺序又没给出应该按什么顺序,是原手册中的极大缺陷,这里给出的补充描述可能也不太清楚,原则就是有相关性的放在一起
- 举例