在我的经验中,Java中的包私有可见性似乎已经变得多余了。
包私有可见性似乎基于这样一个前提:几乎被另一个类私有使用的类很可能会保留在同一包中。但实际情况往往并非如此。是否有人正在探索改进的访问修饰符/替代机制?
试图使用包私有可见性的问题:
我们会尝试将功能不相关的类放在同一个包中以获得这种好处。
使用public的问题:
API会被污染。一旦导入库Jar,客户端就会看到其他几个他不需要关心的公共类。
从编码标准的角度来看,没有简单的方法可以确保开发人员不会在时间紧迫时进行短路调用。(我所说的短路调用是指绕过层(例如从Servlet直接到DAO,绕过bean/BO)的方法调用)
目前的解决方法:
为了防止短路调用,我们通常将应用程序的不同部分打包成几个JAR,并确保每个构建环境中只有相应的JAR可用。(例如,在编译Swing客户端类时,server.jar将不可用。只有客户端类和common.jar可用。)
问题:
1.是否有必要提出新的可见性修饰符/替代方法?
2.是否已经有类似的东西在计划中?
3.Spring/Guice这样的框架是否足以替代?
包私有可见性似乎基于这样一个前提:几乎被另一个类私有使用的类很可能会保留在同一包中。但实际情况往往并非如此。是否有人正在探索改进的访问修饰符/替代机制?
试图使用包私有可见性的问题:
我们会尝试将功能不相关的类放在同一个包中以获得这种好处。
使用public的问题:
API会被污染。一旦导入库Jar,客户端就会看到其他几个他不需要关心的公共类。
从编码标准的角度来看,没有简单的方法可以确保开发人员不会在时间紧迫时进行短路调用。(我所说的短路调用是指绕过层(例如从Servlet直接到DAO,绕过bean/BO)的方法调用)
目前的解决方法:
为了防止短路调用,我们通常将应用程序的不同部分打包成几个JAR,并确保每个构建环境中只有相应的JAR可用。(例如,在编译Swing客户端类时,server.jar将不可用。只有客户端类和common.jar可用。)
问题:
1.是否有必要提出新的可见性修饰符/替代方法?
2.是否已经有类似的东西在计划中?
3.Spring/Guice这样的框架是否足以替代?