如何评价《阿里巴巴JAVA开发手册》完美版,终极版,纪念版?
谢作者邀 @孤尽 (虽然不知道为什么会邀到我。。。)阿里巴巴开发手册听闻很久了,看到这题特意去看了一遍,觉得总的来说写的很不错,绝大部分要点都没什么问题。争议是肯定会有的,不过所谓代码规范就是为了在两
如何评价《阿里巴巴JAVA开发手册》完美版,终极版,纪念版?
谢作者邀 @孤尽 (虽然不知道为什么会邀到我。。。)
阿里巴巴开发手册听闻很久了,看到这题特意去看了一遍,觉得总的来说写的很不错,绝大部分要点都没什么问题。争议是肯定会有的,不过所谓代码规范就是为了在两可的做法间做一个选择让大家遵守,让大家做法同一,省得为了一个变量命名都要打一场圣战。
如果需要评价的是命名方式,我觉得以完美终极这类名字肯定是不妥的。因为完美的程序规范根本就不存在。软件开发是有时效性的,现在觉得对的东西过一阵Java 10出来肯定要修改。建议参考IntelliJ命名方式, Idea 2017.3,一看就知道是2017年第三版,过几年来看也知道”哦,这是五年前的稿子应该有点过时,我来搜搜新的“。
赞誉部分我们就不说了,提点个人建议吧:
- 就定位来说,有些部分略显拖沓,反而降低了总体效果。比如集合处理部分,很多应该算是编程常识,比如6,如果不遵守似乎根本就不编译? 7,循环中不能增减元素应该在课堂上就教过。Java开发中错误模式是无限的,应该抓住重点澄清有争议的部分,明显错误的东西可以依赖基础编程教育纠正。
- 很多时候提供公用的基础类要比写规范有用的多,比如List.toArray规范这一条,我们就有ListUtils这一个公用帮助类提供静态的toArray方法,其他String.split等等也可以类似解决,基于代码的统一要优于基于规范的统一。
- 最后提到了MySQL, ORM,却没有提到常用第三方通用库?比如Google Guava 和 Apache Commons 就是写 Java 不可或缺的通用库,可以解决很多规范化的问题。不加以利用实在可惜(是因为阿里巴巴的原因么?)
- 感觉文章提到很多反例,很多却没有给出对应的建议设计模式。比如OOP构造方法不得有逻辑这一项,我们自己的规范就会说:避免提供公用构造函数,建议通过静态factory method实现(免得调用方忘记init),再给个代码块
public class Foo {
protected Foo(String name) {...}
protected void init() {...}
pubic static Foo create(String name) {
Foo result = new Foo(name);
result.init();
return result;
}
}
这样要点传达的更清晰,也会避免出现各种不同的构造+init模式。
先说这么多吧,最后安利一下Kotlin,解决了很多Java手册里的槽点,阿里没有考虑用用看么?
责任编辑: