倚楼听风雨
淡看江湖路

阿里巴巴Java开发规约第一章-其它篇

1.[强制] 在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。

说明: 不要在方法体内定义: Pattern pattern = Pattern.compile(规则);

老四附言:
Pattern和Matcher同属于java.util.regex类库,通过使用正则表达式解决一些String对象很难解决的字符串难题。

2.[强制] velocity调用POJO类的属性时,建议直接使用属性名取值即可,模板引擎会自动按规范调用POJO的getXxx(),如果是boolean基本数据类型变量(boolean命名不需要加is前缀),会自动调用isXxx()方法。

说明: 注意如果是Boolean包装类对象,优先调用getXxx()的方法。

老四附言:
老四其实没用过velocity模板引擎,所以不敢多写。记得在《Spring4 实战》中看过一部分关于velocity的内容:

Apache Velocity是由Apache提供的通用模板引擎,Velocity 有挺长的历史了,并且已经应用于各种任务中,包括代码生成以及代替JSP.它还能用于格式化富文本 Email消息。Spring提供了一个名为VelocityEngineFactoryBean的工厂bean,它能够在 Spring 应用上下文中很便利地生成VelocityEngine。Spring自带了VelocityEngineUtils来简化将Velocity模板与模型数据合并成String的工作。

VelocityEngineFactoryBean的声明如下:

更多关于Velocity模板引擎可以参考Apache Velocity官方文档Velocity维基百科或者并发编程网ifeve的大佬们翻译的apache-velocity-dev中文版本

3.[强制] 后台输送给页面的变量必须加$!{var}----中间的感叹号。

说明: 如果var=null或者不存在,那么${var}会直接显示在页面上。

老四附言:

这个貌似说的也是velocity模板引擎,详情可以参考一下这个帖子《Velocity中$和$!的区别

4.[强制] 注意Math.random()这个方法返回是double类型,注意取值的范围0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,直接使用Random对象的nextInt或者nextLong方法。

老四附言:
正确的随机取整:

输出结果:

生成随机整数: 611
================
生成随机Long型整数: 1991297349226189494

5.[强制] 获取当前毫秒数System.currentTimeMillis();而不是new Date().getTime();

说明: 如果想获取更加精确的纳秒级时间值,使用System.nanoTime()的方式。在JDK8中,针对统计时间等场景,推荐使Instant类。

简单介绍一下java8中的Instant类:

我们都知道,JDK中的时间类一直以来为我们所诟病,总是存在的诸多不足和处理起来麻烦的地方。比如说Calendar类线程不安全且不支持时区,计数TM还是从0开始。格式化日期的类竟然还需要到Java.text中创建SimpleDateFormat实例。

可能真的官方自己都看不下去了,java8又㕛叒叕新增了关于时间的API,我们从这个API可以看到Joda-Time框架的影子,据说Joda-Time的作者倡导了这次jdk8新的日期API。官网现在已经更新了,详情请戳Joda-Time官网

Java8中的日期和时间类包含LocalDate、LocalTime、Duration、Period以及Instant。其余几个姑且不谈,我们就来说一下这个Instant,如孤尽所言,他其实和System.currentTimeMillis()有点类似,区别于Duration表示的是一个时间点,但是人家是精确到纳秒级别的,这个就精准了。可以使用ofEpochSecond()方法创建实例,通过now()类方法直接获得当前时间戳。直接看个简单的例子吧:

6.[推荐] 不要在视图模板中加入任何复杂的逻辑。

说明: 根据MVC理论,视图的职责是展示,不要抢模型和控制器的活。

老四附言:
再者说也不安全 不是吗?

7.[推荐] 任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存。

老四附言:
来来来,复习的时间。ArrayList的默认初始化容量是多少,HashMap的默认出事容量是多少?

8.[推荐] 任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存。

说明: 对于垃圾代码或过时配置,坚决清理干净,避免程序过度臃肿,代码冗余。

正例: 对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三个斜杠(///)来说明注释掉代码的理由。

老四附言:
emmmmmmmm~~ 养成良好编码的好习惯。

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请赞助盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额,抱拳。赞助时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的赞赏钱财也会被用于小站的服务器运维上面,再次抱拳。

赞(10) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » 阿里巴巴Java开发规约第一章-其它篇
分享到: 更多 (0)
4万+首WAV无损音乐仅需 28 元 赠送24bit合集、DSD音乐、歌手合集、欧美影视原声及本站发布过的音乐

开始你的表演 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下老四,鼓励我更好的创作

支付宝扫一扫打赏

微信扫一扫打赏