这篇文章主要是在带团队过程中积累下来的,一些用于新人培训的内容,和一些即便老人也会偶尔粗心犯错的内容。日后也会不断更新。

JAVA

  • 注意代码规范。参考:Google code style或阿里的Java开发手册。
  • 日期格式化避免使用SimpleDateFormat类,该类是个线程不安全的类,具体请自行google之或研究该类的代码。用Java8新引入的DateTimeFormmater替代或引入jodatime包。
  • 注意单例的正确写法。公司代码中的单例最常用的是双重检验锁的写法,如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Singleton {

private volatile static Singleton instance;

private Singleton() {
}

public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
  • 底层依赖包避免平台依赖。如果确实需要配置平台参数,在项目中提供一个文档或适当的地方说明需要提供配置信息,由依赖方进行提供。比如core包是公司的一个基础依赖包,里面有一个类需要传递平台参数env进行初始化;app项目依赖core包,又刚好需要使用这个类,这个时候env应该配置在app的配置文件中而不应该在core包中。
  • 使用json作为数据传输格式时,注意各json工具包对json字符串的长度限制。
  • 后台程序的jvm启动参数中增加HeapDumpOnOutOfMemoryError参数。后台程序需要用到的heap size应该在测试环境中获得一个合理的预估。发生OOM后,从dump出来的heap信息分析是否有地方大量创建对象用完后又没有释放。
  • 建议新人阅读《Java 8实战》虽然现在都Java10,但这本书里讲的java8新引入的内容在开发过程中还是很有用的。

代码提交

  • 代码提交前,自己先review一遍代码,看看改动是否合理,是否有删错代码,是否有不该提交的内容。利用好IDEA代码提交节目的review功能。
  • 不要忽略IDEA给的warning信息。
  • 撰写良好的commit message,描述清楚本次提交。
  • 非特定项目,无特殊情况,开发人员禁止向master分支提交代码,除非得到负责人要求或同意。

日常

  • 注意文本编码问题。统一使用UTF-8!统一使用UTF-8!统一使用UTF-8!包括代码(注释)、常规文档、文件名等。这个是很多人不注意的地方,时常windows下编辑好到文件,在服务器或mac环境下就乱码了。
  • 留意不可见字符!留意不可见字符!留意不可见字符!(遇到过文件名包含了不可见字符导致解析错误的bug)