Reg*_*Mem 16 java coding-style constants code-organization
我们有一个基于旧的jdk 1.4的庞大项目.我们已将Web应用程序迁移到JDK 1.6,但代码中仍然存在大量低效的实践和糟糕的设计.
关于主要的痛点点巨大的java类在单个java文件中有2500多行代码.这么多文件都是这样的.
试图通过删除常量并将常量放在不同的Constants.java文件中来重构我开始的类.但由于整个应用程序中有很多常量,因此常量文件存在增长到巨大比例的风险.
我希望得到关于开发人员采用什么策略来保持代码清洁和可维护性的反馈.
Mat*_*oli 17
将你的常数保持在与他们相关的类中,不要觉得有必要提取它们.它可能会清理类的代码,但在文件中混合不相关的常量并不是一种改进.
保持相关的事物.
并且你可以在可能/有用时将它们转换为枚举(但这可能需要一些重构).
小智 13
将所有常量放在一个文件中是一个糟糕的主意!特别是超级恒定的反模式,其中所有的常数都是Interface每个班级所必须的implement.周日可怕的10种方式!当人们在Java之前的1990年代早期开始做这件事时,这是一个坏主意!这绝对是2012年的一个坏主意!
这意味着每次导入此uber-Constants文件时,您都会混合大量不相关的信息并创建不需要的依赖项.合在一起的东西应该在一起Enum或者至少在一起Class使用它们作为其方法的参数,这样当它们被改变时,你就知道如何轻松地进行影响分析.
想象一下Color常量混合了与DaysOfTheWeek其他业务领域常量混合的常量,并且在单个文件中将有数百个甚至数千个这样的东西.怎么能被认为是个好主意?在每个非人为的情况下,a Enum是a的public inner成员Class是更好的解决方案.
它还意味着您有一个单独的平面命名空间来尝试创建不冲突的名称,然后它们并不明显它们属于什么以及应该如何使用它们.这绝不是一个积极的做法.
在设计和重构时,您应始终:
努力实现高凝聚力,这意味着尽可能保持相关事物的紧密结合.
争取松散耦合这意味着不要让不相关的东西泄漏到其他不相关的范围内.
努力实现自我记录的可维护代码,数十个或数百个private static final String/int声明混合在一起并不符合任何人的标准!
在2012年,当您拥有Enum作为工具的C风格常量是一个糟糕的解决方案时,您应该专注于尽可能多地转换这些常量组Enum.Enum是类型安全的,可以附加其他属性和属性以及行为来制作它们intelligent.这是走下坡路的道路.