noj*_*ive 12 java architecture refactoring layer
我将在庞大的代码库(18000+ Java类)中重构某些部分.目标是能够将较低层提取为独立库,以便在当前使用此代码库副本的其他项目中重用.特别是将一部分重构为独立于业务逻辑的框架.最终,我希望代码具有干净的架构层次结构.
我用一个名为Structure 101 for java的工具查看了代码,发现很多(!)的架构分层问题,其中较低层引用了上层.
我不想简单地开始搞乱代码,而是试图找出一个合理的策略来解决这个问题.我应该记住什么?
我在考虑至少采取一些小步骤.我也在考虑进行单元测试,但这需要创建它们,因为没有.
有什么想法吗?
您还应该看看Michael Feathers使用遗留代码:
我认为你可以采取的最重要的事情之一是确保在重构/拉出到单独的模块后一切仍然有效的测试.通过引入一个持续集成系统来加入此功能,该系统在您检查某些内容时运行测试.
18,000个班级实际上正朝着“巨大”的方向发展。这将给您带来明显的问题,包括构建/编译时间,以及在启动ide时使计算机冒烟。
我的第一个假设是,使用这么多的类,会有很多重复的通用功能,可能还有未使用的类甚至子系统。我期望这样做是因为,当某事物变得如此之大时,开发人员变得越来越可能不知道整个系统,或者不知道这些Util函数在哪里,并且发现编写新函数变得更加容易。寻找删除冗余将有助于简化操作。
冗余的另一个可能来源是无用的深层类层次结构或无意义的接口堆(例如,在我工作的地方,有一个大约50个左右类的目录,其中大多数> 1000行(不是我的,不是我的!)。一个接口,只不过是其自己的方法框架而已。这些接口没有其他实现(可以全部删除50个)。还有一些开发人员刚刚发现OO并非常热衷于OO-您知道的那些对象是扩展5个抽象类和3个接口的链的单个具体实现。
与此同时,我将尝试截取一段代码(绝对最多几百个类)并将其移至子项目,然后将其作为jar链接到主项目。然后,您可以在一点点的平静中进行工作,并有一定的希望能够理解整个事情-这也有心理方面-如果您觉得自己在工作,就没有动机去做好工作比起您正在完全理解的干净的子项目,这是一个巨大的,难以理解的混乱。
归档时间: |
|
查看次数: |
2517 次 |
最近记录: |