是否有工具可以使所有类包受保护并尽可能最终?

时间:2012-10-26 11:15:19

标签: java ide module

背景:我注意到在许多项目中,内部代码中的几乎所有类都是公共的而不是最终的,即使它们不是必需的。但是,对我来说,默认情况下做出这个决定似乎是明智的,但如果它们实际上是要从系统的其他部分使用,那么只能使类公开。拥有包受保护的类是一种简单的机制来强制模块之间的边界,并作为有关类的预期用途的文档。

如果有一个(最好的免费的:-)工具来保护所有可以保护的类而不破坏程序,并且可能使所有的东西都没有子类,那么这将是一个很好的起点,开始有意识地使用保护机制。 (当然你需要事后调整一下。)你知道这样的工具吗?

警告:我知道有更好的模块化机制,如OSGI和计划的超级包装等等。但是在许多当前项目中,这不是一个选项,使用普通的旧Java机制是您可以轻松完成的。此外,这仅适用于您拥有共享代码所有权(这样每个人都可以根据需要将内容更改回公共状态)以及您是否正在开发最终产品,而不是供其他人使用的库。我也不太确定最终做事的好处 - 这可以防止AOP和嘲笑。

澄清:正如我所说的那样,我不是在谈论那些无法改变它的人,而是关于那些鼓励每个人都鼓励的中型项目的内部代码。根据需要改变和重构一切。当我谈论受保护的包裹或最终将其视为“受到保护,直到某人感到迫切需要解除这些限制”。如果有人觉得需要解除工具设置的限制,欢迎他这样做。

2 个答案:

答案 0 :(得分:2)

即使有这样的工具,(没有),一个优秀的程序员也不会使用它......访问规范是程序员自己最了解和解决的设计问题。考虑一下......你制作一个程序并运行工具并将所有内容排序(假设该工具首先是超级智能的,以便真正理解你的程序)..然后你决定修改它...扩展一些类等等。你最终扩展了最终的类并制作私人类的对象..(这些是你将面临的许多问题中的一小部分)......

事情是..当工具完成它的工作时,你甚至不会理解你自己的程序。

Bottomline ..停止寻找解决您的设计问题的工具..(就像要求自动调试程序的工具一样)

答案 1 :(得分:1)

您可以查看Eclipse中的ATL。虽然ATL用于创建模型以模拟不同类型模型之间的转换,但源和目标模型不具有相同类型的限制。您可以创建从Java到Java的转换,使您当前的类受到保护或最终。 MoDisco是Eclipse使用它的工具集,就像你想要查看示例一样。