# Java 最佳实践指南

> 原文： [https://howtodoinjava.com/java-best-practices/](https://howtodoinjava.com/java-best-practices/)

一个好的程序员就是写程序（不仅仅是代码）的人。 这意味着编写足够独立的代码单元，以便以多种方式重复使用，并且仍然保持健壮性。

因此，让我们开始识别和学习一些 Java 最佳实践，这些最佳实践可以将任何代码转换为程序。

## 1\. Java 设计最佳实践

遵循 Java 最佳实践主要集中在系统设计时间方面。 它们主要对高级开发人员有用。 最终，如果不是今天，您也将成为高级。 为什么不更好地准备呢？

#### [8 个不良单元测试用例的迹象](//howtodoinjava.com/best-practices/8-signs-of-bad-unit-test-cases/ "8 signs of bad unit test cases")

糟糕的单元测试是现实，每个执行代码审查的人都偶尔（可能是定期）面对它。 那么，什么构成不良的测试案例呢？ 如何识别不良测试案例？

#### [Java 中的 5 个类设计原则（S.O.L.I.D.）](//howtodoinjava.com/best-practices/5-class-design-principles-solid-in-java/ "5 class design principles [S.O.L.I.D.] in java") 

在编写类时，请牢记 5 条最推荐的设计原则。 简而言之，这些设计原则称为 SOLID。

#### [单元测试最佳实践](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")

编写糟糕的单元测试非常容易，这会给项目增加很少的价值，同时又会天文数字地增加代码更改的成本。 了解如何正确编写它们。

#### [异常处理的新方法](//howtodoinjava.com/best-practices/best-practices-for-for-exception-handling/ "Best practices for Exception handling")

一种新方法针对每个新的异常情况使用静态内部类。 值得将来的软件设计师阅读。

#### [使用内部类处理 Java 异常](//howtodoinjava.com/best-practices/java-exception-handling-best-practices/ "Java exception handling best practices")

涵盖了一些众所周知的和鲜为人知的实践，您在处理下一个 Java 编程任务中的异常时必须考虑这些实践。

#### [Java 执行器框架最佳实践](//howtodoinjava.com/java-5/java-executor-framework-tutorial-and-best-practices/ "Java executor framework tutorial and best practices")

设计下一个多线程应用时需要牢记的一些最佳实践。

#### [您应考虑迁移旧版系统的 5 个原因](//howtodoinjava.com/best-practices/5-reasons-you-should-consider-migrating-your-legacy-systems/ "5 Reasons You Should Consider Migrating Your Legacy Systems")

从旧的旧系统迁移到新的高级系统有多个原因。 这是其中的 5 个。

#### [编写 Spring 配置文件的 13 个最佳实践](//howtodoinjava.com/spring/spring-core/13-best-practices-for-writing-spring-configuration-files/ "13 best practices for writing spring configuration files")

编写高度可维护的 spring XML 配置的 13 个最佳实践。

## 2\. Java 编码最佳实践

遵循 Java 最佳实践的重点是在您敲键盘并开始键入实际程序时要考虑的事项。 它们主要对所有级别的开发人员/程序员有用。

#### 在生产中生成安全密码哈希（MD5 / SHA）

用户提供的密码通常很弱并且很容易猜到。 Java 中有许多哈希算法，这些哈希算法可以证明对您的应用和用户的密码安全非常有效。

#### [`Serializable`接口指南](//howtodoinjava.com/java/serialization/a-mini-guide-for-implementing-serializable-interface-in-java/ "A mini guide for implementing serializable interface in java")

我们都知道`Serializable`接口的作用。 但是我们真的知道，您的类中有哪些更改会破坏您的设计？

#### [对象初始化最佳实践](//howtodoinjava.com/java/related-concepts/object-initialization-best-practices-internal-caching-in-wrapper-classes/ "Object initialization best practices : Internal caching in wrapper classes")

创建新对象始终是一个昂贵的过程。 让我们学习一下 Java 如何利用对象池解决此问题。

#### [如何使 Java 类不可变](//howtodoinjava.com/java/related-concepts/how-to-make-a-java-class-immutable/ "How to make a java class immutable")

不变类是一种一旦创建便无法更改其状态的类。 有一些创建不可变类的准则。 让我们学习它们。

#### [考虑在运行时重新加载 log4j 级别](//howtodoinjava.com/log4j/how-to-reload-log4j-levels-on-runtime/ "How to reload log4j levels on runtime")

了解如何使用`WatchService`在运行时重新加载日志记录配置。 也可以使用它们来重新加载其他配置。

#### [使用`ToStringBuilder`有效覆盖`toString()`](//howtodoinjava.com/apache-commons/how-to-override-tostring-effectively-with-tostringbuilder/ "How to override toString() effectively with ToStringBuilder") 

`ToStringBuilder`是 apache commons lang 库提供的工具类。 学习使用它编写高度自定义的`toString()`方法。

#### [在任何循环内使用数组代替`Vector.elementAt()`](//howtodoinjava.com/best-practices/use-array-instead-of-vector-elementat-inside-any-loop-for-better-performance/ "Use array instead of Vector.elementAt() inside any loop for better performance")

从多个线程访问时，`Vector`不需要额外的同步，但是由于相同的原因，它会降低其性能。 评估其影响。

#### [在 Java 中始终使用`length()`而不是`equals()`来检查空字符串](//howtodoinjava.com/java/string/always-use-length-instead-of-equals-to-check-empty-string-in-java/ "Always use length() instead of equals() to check empty string in java")

检查字符串是否为空的最好方法是使用`length()`方法而不是`equals()`。 为什么？ 让我们做一些推理。

## 3\. Java 性能最佳实践

遵循 Java 最佳实践可以提高 Java 应用的性能并将其提升到一个新的水平。 努力学习它们并时刻牢记。

#### [不同方式迭代`HashMap`的性能比较](//howtodoinjava.com/java/related-concepts/performance-comparison-of-different-ways-to-iterate-over-hashmap/ "Performance comparison of different ways to iterate over HashMap")

让我们看看迭代`HashMap`的不同方法，看看它们可以带来的性能差异。

#### [Java 中不同`for`循环的性能比较](//howtodoinjava.com/java/related-concepts/performance-comparison-of-different-for-loops-in-java/ "Performance comparison of different for loops in java")

让我们比较一下不同`for`循环的效果。 它们在任何程序中无处不在。

#### [改善 JDBC 性能的最佳实践](//howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/ "Best practices to improve JDBC performance")

数据库访问是任何应用的主要部分。 如果您使用的是简单的 JDBC，那么这个适合您。

更多……

学习愉快！