Java编程一些经验
为了更好地书写安全和易于维护的java代码,现对于外部的一些java类库进行一些介绍,同时,对于常用的模式和编程技巧进行简要的描述。部分代码转自ImportNew。
1. Apache Commons
StringUtils类主要处理字符串,包括字符串的截取、判断是否为空等使用的操作。
ArrayUtils类主要处理数组,包括数组的常用操作。
FileUtils类主要处理文件,包括文件的各种操作。Java API的文件处理有许多繁琐的操作,用这个工具类可以大大简化java的代码量。
2. Google Guava
Files类提供了一些文件的处理,许多方法是Apache Commons包中都没有的方法,处理文件十分方便。
处理前置条件,请使用Preconditions类中的checkArgument和checkNotNull方法。
Null是java中比较难处理的东西,建议使用Optional进行null处理,这样会避免出现空指针异常。
Strings类同样处理字符串数据,有一些Apache Commons中没有的方法。
使用Maps、Sets、Lists类构造集合。
3. SLF4J
存在有很多Java日志解决方案。我最喜欢的是SLF4J,因为它是一个可插入的且能同时联合许多不同的日志框架。
它是一个日志框架,具体的日志实现可以是log4j或者log back。个人更加的倾向于用log back。据我所知log4j目前已经不进行维护了。
4. 建造者模式
如果我们要构建一个复杂的对象的时候,同时,这个对象对于每个实例可能有不同的构建方式的时候,最好选择建造者模式,代码如下:
public class ComplicatedDataHolder {
public final String data;
public final int num;
// lots more fields and a constructor
public static class Builder {
private String data;
private int num;
public Builder data(String data) {
this.data = data;
return this;
}
public Builder num(int num) {
this.num = num;
return this;
}
public ComplicatedDataHolder build() {
return new ComplicatedDataHolder(data, num); // etc
}
}
}
调用方式:
final ComplicatedDataHolder cdh = new ComplicatedDataHolder.Builder()
.data("set this")
.num(523)
.build();
5. 时间库Joda-Time
Java本身的API对于时间的处理很有限,有的时候,需要自己写一套处理时间的API,现在可以选择Joda-Time,查看这个jar包中是否有自己需要的方法,进行处理。
6. 学会用TODO
在Eclipse中的源代码中,对于只实现一部分的类或者方法可以使用//TODO进行标志。
我们可以在Tasks中查看代码中哪个部分用了//TODO操作。协调开发的时候经常会使用//TODO标志。