多阅读开源的优秀代码,保持优秀代码习惯。
不写死换行符
private static final String LINE_SEPARATOR = System.getProperty("line.separator","\n");
不写死操作系统的换行符,保持java的系统无关性
给定默认值
//NumberUtils.toDouble(result, 0);字符转数字,空值不会报错
public static double toDouble(String str, double defaultValue) {
if(str == null) {
return defaultValue;
} else {
try {
return Double.parseDouble(str);
} catch (NumberFormatException var4) {
return defaultValue;
}
}
}
这部分的逻辑我们如果不想处理异常,希望得到默认值,这样的设计就能让使用者代码简介。
返回只读的list,增加安全性
public List<Interceptor> getInterceptors() {
return Collections.unmodifiableList(list);
}
明确list是只读的,这样封装有些场景是必要的,防止误操作。
没实现的方法,应该在调用的时候抛出异常
public ParameterMap getParameterMap(StatementScope statementScope, Object parameterObject) {
throw new RuntimeException ("Method not implemented on RawSql.");
}
个人觉得蛮好的,有些方法暂时想保留,通常做法我们是写一个空方法,但是里面加入一个RuntimeException能保证不引起误导。
异常统一转换成对应的异常
catch (Exception e) {
if (e instanceof SqlMapException) {
throw (SqlMapException) e;
} else {
throw new SqlMapException("Error initializing TransactionManager. Cause: " + e, e);
}
}
异常统一封装为SqlMapException。
异常的抛出
public void runBare() throws Throwable {
Throwable exception= null;
setUp();
try {
runTest();
} catch (Throwable running) {
exception= running;
}
finally {
try {
tearDown();
} catch (Throwable tearingDown) {
if (exception == null) exception= tearingDown;
}
}
if (exception != null) throw exception;
}
是一种思路,但不是都适用,有时候反而让看代码的人看复杂了。
set默认值
public void setDevMode(String mode) {
devMode = "true".equals(mode);
}
如果mode为空,则devMode可以设置默认值为false