我正试图通过阅读大量的例子、文档和询问来尽可能多地自己学习。我希望改进我的风格,以编写高效的代码并遵守Java标准。
在这个代码的小示例中,我想从以下几方面获得反馈:
有两个类,数据库和主。
我的数据库类:
public class Database {
private String dbName = "";
private SqlJetDb db = null;
public Database(String dbName) {
this.dbName = dbName;
}
public void CreateDatabase() throws SqlJetException {...}
public void OpenDatabaseConnection() throws SqlJetException {...}
public void CloseDatabaseConnection() throws SqlJetException {...}
private void InsertRecord(String file) throws SqlJetException {...}
public void GetDirectoryContent(String dir) {
File directory = new File(dir);
if (directory.isDirectory()) {
String[] content = directory.list();
for (String s : content) {
GetDirectoryContent(dir + "\\" + s);
}
} else {
String file = directory.toString();
String extension = file.substring(file.lastIndexOf("."));
if (extension.equals(".h")) {
try {
InsertRecord(file);
} catch (SqlJetException e) {
e.printStackTrace();
}
}
}
}
}主要呼叫:
Database db = new Database("test.db");
try {
db.CreateDatabase();
db.OpenDatabaseConnection();
db.GetDirectoryContent("C:\\test");
} catch (SqlJetException e) {
e.printStackTrace();
} finally {
try {
db.CloseDatabaseConnection();
} catch (SqlJetException e) {
e.printStackTrace();
}
}
}发布于 2012-08-01 12:23:07
就我个人而言
发布于 2012-08-01 08:02:23
考虑以下几点:
public Database(String dbName) {
this.dbName = dbName;
}dbName。请注意,您传递这个引用,然后简单地存储它。因此,如果它为null,则直到稍后(可能,很晚)才会发现。然后,您必须计算出设置为null的时间点。dbName吗?如果不是,就让它成为final。它会阻止你以后不经意地改变它。不变性往往是个好主意。它使类更健壮,线程安全更容易实现。也许这里不是要求,但谁知道呢?更容易的是放宽限制,而不是事后应用它。发布于 2012-08-01 14:43:40
来自有效Java
乍一看:
你可以把你的期末考试
public final class Database {还有一些字符串,比如:
final String file = directory.toString();
final String extension = file.substring(file.lastIndexOf("."));删除字段初始化:
private String dbName;
private SqlJetDb db;然后在public void GetDirectoryContent中使用Files和来自新的nio.2 java 7包的Paths
保重:
finally { // many possible problems再读一遍约书亚·布洛赫的好代码,好好享受吧。
https://codereview.stackexchange.com/questions/14203
复制相似问题