Java:将外国恐怖代码转化为干净 API 的最佳实践......?

标签 java api refactoring readability

我有一个项目(与图算法相关)。这是别人写的。

代码很糟糕:

  • 公共(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/

相关文章:

java - 当文件被其他进程写入时如何停止wso2读取文件

java - 从 JList 取回数据

r - 加速 R 中的 API 调用

c# - 如何在C#中更改音调

ruby-on-rails - 我是否正确使用了 rails 表单?

Javascript - 很多独立函数都很糟糕??? ( Node .js)

javascript - 这个漂亮的小 jQuery 代码似乎不起作用.. 任何人都知道为什么?

java - max 的线程安全实现

java - 子函数中的 RuntimeException 不应影响父调用函数 - REQUIRES_NEW 起作用吗?

android - 我可以使用什么 API 制作 Android 应用程序来检测 Eddystone 信标?