对我来说,Java 初学者 8 的代码审查清单看起来更像 C++ 而不是 Java。我遗漏了什么吗?

2025-06-10

Java 初学者代码审查清单

8 对我来说更像 C++ 而不是 Java。我遗漏了什么吗?

清单总是很有用!它们可以快速检查,确保高效、有效地执行任务的一致性和完整性。

在这里,我整理了一份基本的 20 点代码检查清单,供 Java 初学者参考。这将帮助他们确保代码质量和一致性。

不用多说...让我们开始吧...

1. 空值检查

我们知道NullPointerException是 Java 中最常见的异常,并且可能导致大问题。

因此,作为一般做法,在任何操作之前始终对变量进行空检查。

2.异常处理

应使用 try-catch 块进行异常处理,并在 catch 块中进行适当记录

另外,请确保在finally块中正确关闭资源

3. 代码缩进和格式化

为了获得更清晰、更易读的代码,请彻底使用代码缩进(使用TabSpaces等)。

它可以通过 IDE 的内置编辑器自动完成。例如,在 Eclipse 中使用Ctrl-Shift-F 。同样,在 IntelliJ 中使用 Ctrl-Alt-L 。

利用 Java 格式规则!

4. 优化导入

始终优化 Java 类中的导入。

5.静态代码审查工具

使用静态代码审查工具(如 Sonar、PMD 和 FindBugs)来审查代码。

6. 常量

  • 为多个地方需要的静态值创建一个常量文件

  • 使用数据库驱动的值来获取动态值

  • 使用 ENUM 来表示一组常量

7.命名约定

  • 始终检查变量/方法/类的名称是否真正涵盖主题

  • 软件包名称应全部小写,以反向的互联网域名开头,后跟应用程序名称。例如,org/companyname/appname

  • 类名应以大写字母开头。例如,AnimalEmployeeUser

  • 变量/方法名应采用驼峰命名法。例如animalInstanceListcalculateAmountdisplaySummary()

  • 尽量避免在类/方法/变量名称中使用缩写。建议使用domainCode而不是dmnCd

8. 并非所有单行代码

保持代码简洁易读很重要。所以,最好不要总是使用单行代码。尤其是当我们在一行代码中初始化和操作变量时。

例如,写:

out.write(attrs.get("offset") + "-" + Math.min(attrs.get("count"), attrs.get("offset") + attrs.get("max")) + " " + title + " " + attrs.get("count"));
Enter fullscreen mode Exit fullscreen mode

作为:

int start = attrs.get("offset")
int total = attrs.get("count"))
int end = Math.min(total, start + attrs.get("max"))
out.write(start + "-" + end + " " + title + " " + total)
Enter fullscreen mode Exit fullscreen mode

9. 空白

使用空格分隔组合语句,使代码更具可读性。

例如,写:

Integer.valueOf(params.offset?params.offset:attrs.offset)
Enter fullscreen mode Exit fullscreen mode

作为:

Integer.valueOf(params.offset ? params.offset : attrs.offset)
Enter fullscreen mode Exit fullscreen mode

10. 括号前后的空格

一般来说,我们不在括号中使用空格。

例如,写:

if ( params )
if ( total > 0 )
if ( end < begin )
Enter fullscreen mode Exit fullscreen mode

作为:

if (params)
if (total > 0)
if (end < begin)
Enter fullscreen mode Exit fullscreen mode

11. 花括号

对于单行代码也使用花括号。

例如,写:

if ( end < begin )
    end = begin
Enter fullscreen mode Exit fullscreen mode

作为:

if (end < begin) {
    end = begin
}
Enter fullscreen mode Exit fullscreen mode

12. 评论

始终添加注释(如果有)来定义目的。

例如,某个类的 Javadoc:

/**
 * General convenience tags for layout - header, body and footer
 * @author – Name
 * @dateCreated - Date
 */
class LayoutTagLib {
}

Enter fullscreen mode Exit fullscreen mode

方法的 Javadoc:

/**
 * Gets the user for specified code and role.
 * @param code :- The code, either username or email address
 * @param role :- The role identification e.g. A, B or C. Default is A.
 * @return the user or null if not found
 */
User findUser(String code, String role = "A")
Enter fullscreen mode Exit fullscreen mode

确保代码是不言自明的,并且注释在非常特殊的情况下确实有用。

13.清理

  • 删除控制台打印语句(SOP),改用日志记录(从不记录个人信息)

  • 删除过时的评论

  • 如果方法/变量不打算将来使用或将被删除,请在方法/变量上使用@deprecated注释

  • 删除硬编码的变量值

14.业务逻辑

通过使用可重复使用的组件(如实用程序和服务方法)来避免冗余代码。

15.使用StringBuilderStringBuffer代替String

当对String执行大量操作时,使用StringBuilderStringBuffer

例如,Java 每次进行字符串连接操作时都会创建一个新的String对象。在这种情况下,更好的方法是使用StringBuffer

16. switch-case 语句覆盖多个if-else 语句

使用switch-case代替多个if-else条件是一种很好的做法。

它优化了代码执行,也使代码更清晰、更易读。

17. 循环创建对象

通常最好在循环内创建对象(如果循环外不需要对象)。Java 会优化短生命周期对象的内存使用。

例如,写:

Person person;
for (int i=0; i<namesList.size(); i++) {
    person = new Person();
    person.setName(namesList.get(i));
    person.display();
}
Enter fullscreen mode Exit fullscreen mode

作为:

for (int i=0; i<namesList.size(); i++) {
    Person person = new Person();
    person.setName(namesList.get(i));
    person.display();
}
Enter fullscreen mode Exit fullscreen mode

此外,仅在需要时创建新对象。

例如,写:

ArrayList<Person> personList = new ArrayList<Person>();
for (int i=0; i<namesList.size(); i++) {
    Person person = new Person();
    if (null != namesList.get(i)) {
        person.setName(namesList.get(i));
        personList.add(person);
    }
}
Enter fullscreen mode Exit fullscreen mode

作为:

ArrayList<Person> personList = new ArrayList<Person>();
for (int i=0; i<namesList.size(); i++) {
    if (null != namesList.get(i)) {
        Person person = new Person();
        person.setName(namesList.get(i));
        personList.add(person);
    }
}
Enter fullscreen mode Exit fullscreen mode

18. 代码提交

  • 将文件分组并一起提交(不要在单独的提交中提交文件)

  • 不要提交包含实际密码的代码。确保使用系统/配置变量来替换密码

  • 提交消息应包含任务信息。例如,JIRA 问题编号、关于代码实现的有意义的评论

  • 仅在需要时提交.class文件(来自buildouttarget目录)

19. 使用equals而不是==

equals执行两个字符串的实际比较,而 == 比较对象引用。

20.保持简单!

保持代码的简单性和可读性。

请告诉我你的想法。
感谢阅读。

鏂囩珷鏉ユ簮锛�https://dev.to/smartyansh/code-review-checklist-for-java-beginners-181f
PREV
我的职业生涯和经验教训
NEXT
如果您不使用 SSH 证书,那么您使用 SSH 的方式就错了 | 第 2 集:证书可提高可用性、可操作性和安全性