我正在开发一个java项目,我必须扩展(增加更多功能)。但是我不知道在融合之前应该如何学习现有的。 我有什么特别的路要走? 我可以以某种方式运行它,以便我可以通过声明查看程序的执行情况吗?了解大型Java程序
我是一种卡在了解它,谢谢。
我正在开发一个java项目,我必须扩展(增加更多功能)。但是我不知道在融合之前应该如何学习现有的。 我有什么特别的路要走? 我可以以某种方式运行它,以便我可以通过声明查看程序的执行情况吗?了解大型Java程序
我是一种卡在了解它,谢谢。
您可以随时在调试器/您选择的IDE中启动它,并逐步完成所有您想要的操作,尽管最好找到更熟悉源代码的人员以提供概述,或查找关于从何处开始的文档。
感谢您的快速回复,但问题在于它是一个名为YETI的软件测试程序,我通过提供所需参数和要测试的类在eclipse中运行,但在点击进入按钮之后,程序将异常但没有调试器,它运行平稳。 – 2011-02-11 22:32:26
我试过这个,但经过几步之后,它给了classnotfoundexception,所以未能继续。 – 2011-03-02 20:07:43
选择您理解要求的一项功能。找到该功能的入口点,并按照该功能的代码进行操作。它应该让你很好地理解架构的工作原理。
我试过这个,但失败.... – 2011-03-02 20:06:47
我建议您先从调试开始,以便您可以一步一步地完成程序。
这是一个关于堆栈溢出的经常性问题。已经有很好的答案各地:
此外,这本书可以帮助:Working Effectively with Legacy Code
“耐心和毅力可以征服一切。 “ - Ralph Waldo Emerson
我没有太多时间,因为我正在做博士,我必须显示结果.... – 2011-03-02 20:08:18
与已编写的代码集成可能非常困难。根据我的经验,我已经获得的关于已经编写代码的一些最好线索来自方法签名(函数输入到其输出的映射)。该方法的签名可以为您提供很多关于程序的提示,即在何处以及特定方法如何适用于较大程序的情况。通常,方法签名与描述性方法名称相结合可以为您提供足够的信息,尤其是在像Java这样的类型化语言中。尽管我不会建议逐行运行代码并查看更改(因为这通常相当于大量工作),但对于非常丑陋但很重要的代码,有时候这是非常必要的(我已经在使用definitley之前完成了它DDD for C程序)。在这种情况下,快速谷歌搜索显示http://www.debugtools.com/,这是一个图形化的Java调试器,它可以做到这一点;似乎也有与Java一起工作的DDD版本。
这是另一种方法,它是hacky,但是我发现它在过去无法附加调试器时很有用。如果您正在查看一段代码,但很难弄清楚谁正在调用它,则可以抛出一个新的运行时异常,并捕获它并打印堆栈跟踪。
try { throw new RuntimeException("who is calling me"); } catch (RuntimeException e) { e.printStackTrace(); }
文档:
如果有文件,这将是有帮助的。但它可能是一个陷阱,尽可能多的文档已经过时,它们可能会误导你。
修正:
您可以用bug修正或新功能植入启动。开始小范围的工作,这将是一件容易的工作。在错误修复期间,您可以越来越多地理解代码。
以下是如果你使用Eclipse或类似的产品
遗留代码 - 生活中所有问题的原因和解决方案 – ryebr3ad 2011-02-11 22:29:05
[接管项目 - ](http://stackoverflow.com/questions/3147059/taking-over-a -project) – 2011-02-11 22:49:24