我在一个中等规模的团队中工作,并且经常遇到这些令人痛苦的大类文件。我的第一个倾向是用刀去攻击他们,但这通常只会让事情变得更糟,让我陷入糟糕的心态。
例如,假设您刚刚获得了一个 Windows 服务来处理。现在这个服务有一个错误,你需要弄清楚这个服务做了什么,然后才能有任何修复它的希望。你打开服务,发现有人决定只使用一个文件来处理所有事情。开始方法在那里,停止方法,定时器,所有的处理和功能。我说的是数千行代码。一百行代码以下的方法很少见。
现在假设你不能重写整个类并且这些神类只是不断弹出,处理它们的最好方法是什么?你从哪里开始?你首先尝试完成什么?你如何处理这种事情而不是只想得到所有的刺伤。
如果你有一些策略来控制你的脾气,那也是受欢迎的。
到目前为止的提示:
- 建立测试覆盖率
- 代码折叠
- 重组现有方法
- 记录发现的行为
- 以渐进式改进为目标
编辑:
Charles Conway 推荐了一个非常有帮助的播客。关联
Michael Feathers(播客中的那个人)从一个前提开始,他们不敢简单地将项目从源代码控制中取出,直接使用它,然后丢弃更改。我可以说我对此感到内疚。
他基本上是说拿走你想了解更多的项目,然后开始把它拆开。发现它的依赖关系,然后打破它们。跟随它走过它所到之处。
很棒的提示 使用在别处使用的大类并让它实现一个空接口。然后使用该类获取代码并让它实例化接口。这将为您提供代码中该大型类的所有依赖项的完整列表。