【问题标题】:Understanding a large Java program了解大型 Java 程序
【发布时间】:2011-06-25 20:57:24
【问题描述】:

我正在开发一个 java 项目,我必须扩展(添加更多功能)它。但我不知道在合并它们之前我应该​​如何学习现有的。 我应该遵循任何特定的路径吗? 我可以以某种方式运行它,以便我可以逐句查看程序的执行情况吗?

我有点理解它,谢谢。

【问题讨论】:

标签: java


【解决方案1】:

这是另一种方法,但我发现在过去无法附加调试器时很有用。如果您正在查看一段代码,但很难确定是谁在调用它,您可以抛出一个新的运行时异常,捕获它并打印堆栈跟踪。

尝试 { throw new RuntimeException("谁在叫我"); } 捕捉(运行时异常 e){ e.printStackTrace(); }

【讨论】:

    【解决方案2】:

    您始终可以在调试器/您选择的 IDE 中启动它并逐步完成所有您想要的操作,但最好找一个更熟悉源代码的人为您提供概述或查找文档从哪里开始。

    【讨论】:

    • 感谢您的快速回复,但问题是它是一个名为 YETI 的软件测试程序,我在 eclipse 中通过提供所需的参数和要测试的类来运行它,但在单击 step into 按钮后程序抛出异常但没有调试器它运行顺利。
    • 我试过了,但经过几个步骤后它给出了 classnotfoundexception,因此无法继续。
    【解决方案3】:

    选择一项您了解其要求的功能。找到该功能的入口点并遵循该功能的代码。它应该能让您很好地了解架构的工作原理。

    【讨论】:

      【解决方案4】:

      与已编写的代码集成可能非常困难。根据我的经验,关于已编写代码的一些最佳线索来自方法签名(函数输入到输出的映射)。该方法的签名可以为您提供有关程序的很多提示,即该特定方法在何处以及如何适合更大程序的上下文。通常,方法签名加上描述性方法名称可以为您提供足够的危险信息,尤其是在 Java 这样的类型化语言中。

      虽然我不建议逐行运行代码并查看更改(因为这通常需要大量工作)但对于非常丑陋但重要的代码有时是必要的(我在使用 DDD 之前已经定义了对于 C 程序)。在这种情况下,快速的 google 搜索会显示 http://www.debugtools.com/ ,这是一个图形化的 java 调试器,它可以解决问题;似乎也有适用于 Java 的 DDD 版本。

      【讨论】:

      • 我怀疑在过去的 10 年里是否有人一直在为 Java 程序使用独立的调试器。所有 Java IDE 都具有良好集成的调试器。
      【解决方案5】:

      这是 Stack Overflow 上经常出现的问题。周围已经有了很好的答案:

      另外,这本书可能会有所帮助:Working Effectively with Legacy Code

      “耐心和毅力战胜一切。” - 拉尔夫沃尔多爱默生

      【讨论】:

        【解决方案6】:

        我建议您也从调试开始,以便您可以逐步完成程序。

        【讨论】:

          【解决方案7】:
          • 文档:

            如果您有文档,将会很有帮助。但这可能是一个陷阱,因为许多文档已经过时,它们可能会误导您。

          • 修正:

            您可以从错误修复或新功能植入开始。从小范围开始工作,这将是轻松的工作。在修复期间,您可以越来越了解代码。

          【讨论】:

          • 没有关于包的文档。
          【解决方案8】:
          1. 基线代码,我一般会用git
          2. 构建应用程序
          3. 运行它。
          4. 如果基线构建失败或流程过于复杂,请创建一个分支并修复它
          5. 创建一个分支并修改一个字符串或在您修改代码时会显示一些可见更改的内容。
          6. 如果 Javadocs 不是通过 ant 或构建文件创建的,请创建一个新分支来执行此操作。
          7. 如果没有 JUnit 测试用例(或者如果有但它们不起作用),请创建一个分支并修复它。
          8. 创建一个新分支来进行合并。

          以下是如果您使用的是 Eclipse 或类似产品

          1. 如果您是唯一的开发人员,请创建一个新分支并设置项目设置以进行代码格式化和清理。然后执行代码格式化和清理。这将使您有一个更稳定的基线以供将来的工作使用。如果没有,请尝试与他人协调。
          2. 安装 FindBugs、Checkclipse、PMD 以对代码库进行一些简单的检查。有时查看 WTF 可以让您更好地了解事情是如何运作(或不运作)
          3. 安装 Eclemma 并查看实际测试了多少代码。

          【讨论】:

            猜你喜欢
            • 2011-03-11
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 1970-01-01
            • 2011-02-01
            • 2014-03-15
            • 2014-03-09
            • 2011-09-27
            相关资源
            最近更新 更多