2011-02-11 61 views
6

我正在开发一个java项目,我必须扩展(增加更多功能)。但是我不知道在融合之前应该如何学习现有的。 我有什么特别的路要走? 我可以以某种方式运行它,以便我可以通过声明查看程序的执行情况吗?了解大型Java程序

我是一种卡在了解它,谢谢。

+0

遗留代码 - 生活中所有问题的原因和解决方案 – ryebr3ad 2011-02-11 22:29:05

+2

[接管项目 - ](http://stackoverflow.com/questions/3147059/taking-over-a -project) – 2011-02-11 22:49:24

回答

1

您可以随时在调试器/您选择的IDE中启动它,并逐步完成所有您想要的操作,尽管最好找到更熟悉源代码的人员以提供概述,或查找关于从何处开始的文档。

+0

感谢您的快速回复,但问题在于它是一个名为YETI的软件测试程序,我通过提供所需参数和要测试的类在eclipse中运行,但在点击进入按钮之后,程序将异常但没有调试器,它运行平稳。 – 2011-02-11 22:32:26

+0

我试过这个,但经过几步之后,它给了classnotfoundexception,所以未能继续。 – 2011-03-02 20:07:43

1

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

+0

我试过这个,但失败.... – 2011-03-02 20:06:47

0

我建议您先从调试开始,以便您可以一步一步地完成程序。

1

这是一个关于堆栈溢出的经常性问题。已经有很好的答案各地:

此外,这本书可以帮助:Working Effectively with Legacy Code

“耐心和毅力可以征服一切。 “ - Ralph Waldo Emerson

+0

我没有太多时间,因为我正在做博士,我必须显示结果.... – 2011-03-02 20:08:18

1

与已编写的代码集成可能非常困难。根据我的经验,我已经获得的关于已经编写代码的一些最好线索来自方法签名(函数输入到其输出的映射)。该方法的签名可以为您提供很多关于程序的提示,即在何处以及特定方法如何适用于较大程序的情况。通常,方法签名与描述性方法名称相结合可以为您提供足够的信息,尤其是在像Java这样的类型化语言中。尽管我不会建议逐行运行代码并查看更改(因为这通常相当于大量工作),但对于非常丑陋但很重要的代码,有时候这是非常必要的(我已经在使用definitley之前完成了它DDD for C程序)。在这种情况下,快速谷歌搜索显示http://www.debugtools.com/,这是一个图形化的Java调试器,它可以做到这一点;似乎也有与Java一起工作的DDD版本。

3

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

 
try { 
    throw new RuntimeException("who is calling me"); 
} catch (RuntimeException e) { 
    e.printStackTrace(); 
} 
0
  • 文档:

    如果有文件,这将是有帮助的。但它可能是一个陷阱,尽可能多的文档已经过时,它们可能会误导你。

  • 修正:

    您可以用bug修正或新功能植入启动。开始小范围的工作,这将是一件容易的工作。在错误修复期间,您可以越来越多地理解代码。

0
  1. 基线的代码,我一般会使用git
  2. 执行应用
  3. 来看,它的生成。
  4. 如果基准失败建立或处理过于复杂,请创建一个分支并修复它
  5. 创建分支并修改字符串或某些在修改代码时会显示某些可见更改的内容。
  6. 如果Javadoc不是通过ant或构建文件创建的,请创建一个新的分支来执行此操作。
  7. 如果没有JUnit测试用例(或者如果存在但它们不起作用),请创建一个分支并修复它。
  8. 创建一个新分支进行合并。

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

  1. 如果你是唯一的开发商,创建一个新的分支和代码格式化和清理设置的项目设置。然后执行代码格式和清理。这将使您可以为未来的工作建立更稳定的基准线。如果不是,请尝试与其他人协调。
  2. 安装FindBugs,Checkclipse,PMD在代码库上做一些简单的检查。看看WTFs有时会给你一个更好的想法如何工作(或不)
  3. 安装Eclemma,看看有多少代码被实际测试。