我有一个项目(与图算法相关)。这是别人写的。
代码很糟糕:
- 公共(public)字段,无 getter/setter
- 巨大的方法,所有公共(public)
- 有些类有超过20个字段
- 有些类有超过 5 个构造函数(也很大)
- 其中一些构造函数只留下许多字段
null
(所以我不能将某些字段设置为最终字段,因为这样每两个构造函数都会发出错误信号) - 方法和类在两个方向上相互依赖
我必须将其重写为一个干净易懂的 API。
问题是:我自己不明白这段代码中的任何内容。
请给我分析和理解此类代码的提示。
我在想,也许有执行静态代码分析的工具 并给我调用图和类似的东西。
最佳答案
哦,亲爱的 :-) 我羡慕你,但不是在同一时间……好吧,让我们一次只做一件事。在设置代码分析工具之前,您可以自己解决其中一些问题。通过这种方式,您将获得更好的理解,并且能够比使用简单工具走得更远
- 公共(public)字段,没有 getters/setters
- 将所有内容设为私有(private)。您的规则应该是尽可能限制访问
- 庞大的方法,全部公开
- 在有意义的地方拆分并私有(private)化
- 有些类有超过 20 个字段
- 呃..Effective Java 2nd Ed 中的构建器模式是这方面的主要候选者。
- 有些类有超过 5 个构造函数(也很大)
- 听起来像伸缩构造函数,与上面相同的模式会有帮助
- 其中一些构造函数只是让许多字段为空
- 是的,它是伸缩构造函数 :)
- 方法和类在两个方向上相互依赖
- 这将是最没有乐趣的。除非你非常清楚,否则请尝试删除继承 它是必需的,并在适用的情况下通过接口(interface)使用组合
祝你好运,我们在这里提供帮助
关于Java:将外国恐怖代码转化为干净 API 的最佳实践......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488678/