背景:我注意到在许多项目中,几乎所有内部代码中的类都是公共的而不是最终的,即使它们不需要。但是,对我来说,不默认做出这个决定似乎是明智的,而只有在它们实际上打算从系统的其他部分使用时才公开类。拥有包保护类是一种在模块之间强制执行边界的简单机制,并用作关于类的预期用途的文档。
如果有一个(最好是免费的 :-) 工具来保护所有可以在不破坏程序的情况下受到保护的类,并且可能使所有没有子类的东西成为最终的,那么这将是开始有意识地使用保护机制的一个很好的起点。(当然你需要在之后进行调整。)你知道这样的工具吗?
警告:我知道有更好的模块化机制,比如 OSGI 和计划中的超级包等等。但是在许多当前的项目中,这不是一个选项,使用普通的旧 Java 机制是您可以轻松做到的。此外,这仅在您共享代码所有权(这样每个人都可以根据需要将内容更改回公共)并且如果您正在开发最终产品而不是供他人使用的库时才有效。我也不太确定最终确定的好处——这可以防止 AOP 和嘲笑。
澄清:正如我所说,我不是在谈论将库扔给无法更改的人,而是在鼓励每个人根据需要更改和重构所有内容的中型项目的内部代码。当我谈论受保护的包裹或最终将其视为“受到保护,直到有人感到迫切需要解除这些限制”。如果有人觉得有必要解除该工具设置的限制,欢迎他这样做。