wangshuo'blog

wangshuo'blog

重构 | 记一次代码重构

重构 | 记一次代码重构

下面记录一次使用 gpt 来帮助进行代码重构的记录

Link

重构前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public Dictionary getEntryByWord(String word) throws SQLException {
String sql = "SELECT word, definition, count FROM t_dictionary WHERE word = ?";

try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, word);

try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
String definition = rs.getString("definition");
long count = rs.getLong("count");
return new Dictionary(word, definition, count);
} else {
return null;
}
}
}
}

public Dictionary getEntryByDefinition(String queryDefinition) throws SQLException {
String sql = "SELECT word, definition, count FROM t_dictionary WHERE definition = ?";

try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, queryDefinition);

try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
String definition = rs.getString("definition");
long count = rs.getLong("count");
return new Dictionary(definition, definition, count);
} else {
return null;
}
}
}
}

重构后

getEntryByWordgetEntryByDefinition 方法合并成一个getEntry方法,用一个参数来指定要查询的字段,可以有效避免代码重复和冗余。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public Dictionary getEntryByWord(String word) throws SQLException {
return getEntry("word", word);
}

public Dictionary getEntryByDefinition(String queryDefinition) throws SQLException {
return getEntry("definition", definition);
}

public Dictionary getEntry(String queryValue, String queryField) throws SQLException {
String sql = "SELECT word, definition, count FROM t_dictionary WHERE " + queryField + " = ?";

try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, queryValue);

try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
String word = rs.getString("word");
String definition = rs.getString("definition");
long count = rs.getLong("count");
return new Dictionary(word, definition, count);
} else {
return null;
}
}
}
}