真正到企业了才知道为什么规范那么重要,因为那样做肯定是不会出问题,如果你自己想一套,90%以上都会有一些小问题,然后在规范的基础上做创造性的工作,这样可以保证出现问题不是因为规范而导致的,而是因为其他工作的疏忽导致的。如果对于处理问题的规范没有的话,那么就可以自己创造一个规范,使得下次再也不会犯同样的错误。我举个例子吧,比如说数据库语句,首先,我们保证写的数据库语句是没有问题,而且也符合数据库规范,如:
public Info getInfo(long id1, long id2) {
PreparedStatement stmt = null;
ResultSet rs = null;
try {
final Connection conn = dao.getConnection();
stmt = conn.prepareStatement(SELECT_STATEMENT);
stmt.setLong(1, id1);
stmt.setLong(2, id2);
Info info = null;
rs = stmt.executeQuery();
if (rs.next()) {
info = getInfo(rs);
}
return info;
} finally {
closeResultSet(rs);
closeStatement(stmt);
}
}
public static void closeStatement(Statement stmt) {
try {
if (stmt != null) {
stmt.close();
}
} catch (final SQLException e) {
e.printStackTrace();
}
}
public static void closeResultSet(ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (final SQLException e) {
e.printStackTrace();
}
}
这样我们可以保证数据库语句是没有错的,还有最好把查询的语句也用静态常量来表示,如果有问题,肯定是参数传的出问题了,这样不会因为数据库相关的出现问题而花费大量的时间在解决这些与实际问题相关性不是很大的事情上。
再举个例子,比如socket编程,
try {
//code here
} catch (IOException e) {
e.printStackTrace(System.out);
} finally {
closeSocket(); //必须加上这一句
}
在最后finally的时候一定要加上close,如果不加的话,在中间代码中跳出一个异常,或者直接return的时候,这个连接就会一直连着,有时候连自己都不知道错在哪里。
平时开发中,如果发现在这段代码上你不得不写上注释的时候,你应该想一下,把这段需要注释的代码用一个函数来表示,函数名需要是能够清楚的表达这个函数是干什么的;如果发现实现一个功能可以用一种更加容易理解的清晰的方法实现,则貌不犹豫地用这种清晰的方式来实现。
所以平时应该养成良好开发的习惯,这样就能高效地开发出健壮性良好的程序。