了解大型Java程序

时间:2011-02-11 22:27:34

标签: java

我正在研究一个java项目,我必须扩展(添加更多功能)。但我不知道在合并之前我应该​​如何学习现有的。 我应该遵循哪条具体路径? 我可以以某种方式运行它,以便我可以看到语句,程序的执行吗?

我很难理解它,谢谢。

8 个答案:

答案 0 :(得分:3)

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

try {
  throw new RuntimeException("who is calling me");
} catch (RuntimeException e) {
  e.printStackTrace();
}

答案 1 :(得分:1)

您可以随时在调试器/您选择的IDE中启动它,并随心所欲地执行它,尽管最好找一个更熟悉源的人来为您提供概述,或者查找文档在哪里开始。

答案 2 :(得分:1)

选择一项您了解其要求的功能。找到该功能的入口点,然后按照该功能的代码进行操作。它应该让您很好地理解架构的工作原理。

答案 3 :(得分:1)

这是关于Stack Overflow的一个经常出现的问题。周围已经有很好的答案:

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

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

答案 4 :(得分:1)

与已编写的代码集成可能非常困难。根据我的经验,我得到的关于已编写代码的一些最佳线索来自方法签名(函数输入到其输出的映射)。方法的签名可以为您提供有关程序的大量提示,即特定方法在大型程序的上下文中的位置,特别是该方式的位置。通常,方法签名与描述性方法名称相结合可以为您提供足够的信息,尤其是在类似Java的类型语言中。

虽然我不建议逐行运行代码并查看更改(因为这通常相当于大量的工作)但是对于非常丑陋但重要的代码有时候是必要的(我确定在使用DDD之前完成它)对于C程序)。在这种情况下,快速谷歌搜索显示http://www.debugtools.com/,一个图形java调试器,可以做到这一点;似乎还有与Java一起使用的DDD版本。

答案 5 :(得分:0)

我建议您先从调试开始,这样您就可以逐步完成该程序。

答案 6 :(得分:0)

  • 文档:

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

  • 修正:

    您可以从错误修正或新功能植入开始。小范围开始工作,这将是简单的工作。在错误修复期间,您可以越来越多地理解代码。

答案 7 :(得分:0)

  1. 基线代码,我一般会使用git
  2. 执行应用程序的构建
  3. 运行它。
  4. 如果基线失败,构建或过程太复杂,请创建分支并进行修复
  5. 创建分支并修改字符串或某些内容,如果您修改代码,则会显示一些可见的更改。
  6. 如果没有通过ant或build文件创建Javadoc,请创建一个新分支来执行此操作。
  7. 如果没有JUnit测试用例(或者如果有,但它们不起作用),请创建一个分支并进行修复。
  8. 创建新分支以进行合并。
  9. 以下是您使用Eclipse或类似产品

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