组织 Java 常量的理想方法

我们有一个基于旧jdk 1.4的大型项目。我们已经将Web应用程序迁移到JDK 1.6,但代码中仍然存在许多低效的做法和糟糕的设计。

在主要的痛点上,单个java文件中有2500多行代码。像这样的文件太多了。

为了重构类,我从删除常量并将常量放在不同的常量中开始.java文件。但是由于整个应用程序中有如此多的常量,因此常量文件有增长到巨大比例的风险。

如果能就开发人员采用什么策略来保持代码的整洁和可维护性,我将不胜感激。


答案 1

将常量保留在与它们相关的类中,不要觉得有义务提取它们。它可能会清理类的代码,但在文件中混合不相关的常量并不是一种改进。

将事物关联在一起

而且,您也可以在可能/有用的情况下将它们转换为枚举(但这可能需要一些重构)。


答案 2

将所有常量放在一个文件中是一个可怕的主意!特别是超常数反模式,其中所有常量都位于每个类都必须的中。10种方式周日可怕!当人们在1990年代初Java之前开始这样做时,这是一个坏主意!这在2012年绝对是一个坏主意!Interfaceimplement

这意味着您每次导入此uber-Constants文件时都会混合大量不相关的信息并创建不需要的依赖项。在一起的东西应该在一个或至少使用它们作为其方法的参数的中一起,以便当它们被更改时,你知道如何轻松地进行影响分析。EnumClass

想象一下,常量与其他业务领域常量混合在一起的常量混合在一起,单个文件中将有数百个甚至数千个这样的东西。这怎么能被认为是一个好主意呢?在每一个非人为的情况下,作为成员的 a 是更好的解决方案。ColorDaysOfTheWeekEnumpublic innerClass

这也意味着你有一个单一的平面命名空间来尝试创建不冲突的名称,然后它们就不明显了,它们属于什么以及它们应该如何使用。这从来都不是一个积极的练习。

在设计和重构时,您应该始终:

力求高凝聚力,这意味着将相关事物尽可能地紧密结合在一起。

争取松散耦合,这意味着不要让不相关的东西泄漏到其他不相关的范围中。

努力自我记录可维护的代码,几十个或几百个声明混合在一起不符合任何人的标准!private static final String/int

在 2012 年,C 型常量是一个糟糕的解决方案,当你现在有一个工具时,你应该专注于尽可能地将尽可能多的这些常量组转换为常量组。 是类型安全的,并且可以附加其他特性和属性以及行为以使它们。这是一条要走下去的道路。EnumEnumEnumintelligent


推荐