用Java理解大公司项目的最佳方法是什么?

评论

您可能想澄清您的问题。理解大型代码库是调试它的必要但不充分的前提。

是秋千吗? JSP?命令行?批量?但基本上...开始闲逛。查找程序的一些示例部分(基于jsp的页面,基于swing的窗口)并查看用于使其成为一个好的代码……如果它的大小很大,您将不会走那么远只是盯着代码库。修复某人报告的一些bug往往效果很好...

公司中还有其他人已经知道代码库吗?首先,请其中一个给您“浏览”系统的基本工作原理。

无论如何,这不值得……我喜欢检查提交的内容,并通过渗透学习事物。占用整个代码库可能会让人不知所措(这可能是问题的原因)

#1 楼

您永远不会知道公司中每段代码的每一行。您可以做的是了解类,类以及它们之间的相互关系。

首先从类的角度对代码的流动方式进行最基本的了解,重点是大型完成大部分工作的课程。一旦了解了正在发生的事情,就开始关注较小的类。继续进行下去,直到您对少数几个类有了很好的了解。

此外,您可以将其分解为公司所拥有的常见编程任务。一旦获得了这些研究的清单,实施每个研究涉及什么。

最后一件事就是经验。您可以根据需要学习代码,但是没有替代品可以使用实际代码。编写程序,进行测试并查看现有代码的运行方式是学习新系统的最佳方法。

#2 楼

关于这个主题的Dave Thomas(“实用程序员” Dave)在这里进行了很好的播客/访谈。

他称之为“软件考古学”。

对于许多不同的人组织经常失去对代码库的控制的原因。知识被忘记,人们离开。可以很容易地将代码库误认为是考古问题,不是因为基于它的任务关键型应用程序一直在不断变化,直到需要修改或增强某些东西,然后突然您拥有一大堆没人能理解的源代码但这在一夜之间已经成为世界上最重要的事情。

很少有捷径可以应对大桶的代码。通常,人们必须在对“理解它”的追求与进行有针对性的务实改变以“完成任务”的压力之间取得平衡。

评论


感谢您指向此播客的指针。看来它已经移到了这里:se-radio.net/2009/11/…

–斯基皮舞
2011年3月7日在15:06

#3 楼

开始编写单元测试-您会做一些有用的事情(这可能会让您有更多的时间来理解代码),并且可以深入了解该功能。此外,在此过程中提出问题时,您可以开始提出问题,您将能够提出非常具体的问题,并且可能给同事留下深刻的印象:)

#4 楼

我经常从的几个地方开始是构建/打包/部署脚本和配置文件-根据我们正在讨论的应用程序的大小,它们可以告诉您很多内部结构,外部依赖关系,并突出显示需要进一步研究的内容。

接下来,您可以使用代码覆盖率工具,并记录简单场景的覆盖率,该场景大致指出了执行该操作的区域。在跟踪分析器下运行此方法的变体。堆转储对于了解基本数据结构也很有用。

最后,在各种情况下查看应用程序日志,尽管这些通常是太多信息,并且您需要知道要查找的内容。

所有这些都应该使您对整个应用程序有所了解。之后,您需要启动调试器并开始戳代码。向同事询问他们最喜欢的断点位置-通常每个人都有一些断点。

如果您使用Java或C#,请确保您了解IDE以及如何使用查找用法。还有更多用于静态分析和理解的更高级工具,例如Structure101(我的最爱),SonarJ或LattixDSM。

某些UML逆向工程工具可以生成类图,但是通常它们会产生过多的噪音,并且手动进行修剪假定您可以从不重要的内容中辨别出重要的内容(新代码库通常不会如此) )。如果您能获得其中之一,则建议从基本类开始,并使用“添加依赖项”功能来逐步浏览应用程序。

#5 楼

承担一个简单的首要任务,不要着急。环顾四周,花时间学习和理解环境。检查调用堆栈,使用调试器。然后,当您有解决方案时,请同伴进行代码审查,并向他们学习。
然后执行另一项任务,另一项任务和另一项任务...

很快就会出现:)

#6 楼

记录文档,我的朋友,寻找经理模式来寻求与代码一起执行jsp的操作,不要害怕做小小的改变,看看会发生什么,了解逻辑和构建块,远离文档不良的公司。