2010-06-03 36 views
4

了解java中的大公司项目的最佳方式是什么?了解Java中的大公司项目

+1

你可能想澄清你的问题。 *了解*大代码库是调试它的必要但不是充分的先决条件。 – 2010-06-03 01:10:05

+2

它是Swing吗? JSP?命令行?批量? 但基本上...开始探索。寻找程序的几个示例部分(基于jsp的页面,基于swing的窗口)并查看用于实现它的代码是一个好的开始......如果它有任何实际的大小,那么您不会那么远只是盯着代码库。修复某人报告的一些错误往往会奏效... – bwawok 2010-06-03 01:13:13

+2

公司中是否有其他人知道代码库?我首先要求他们中的一个给你一个关于系统基本工作的“参观”。 – 2010-06-03 01:22:48

回答

9

你永远不会知道公司每一段代码的每一行。你可以做的是理解课程,他们做什么,以及他们如何相互关联。

首先从类的角度对代码流的方式进行最基本的了解,重点关注执行大部分工作的大类。一旦你明白发生了什么,那么就开始关注小班。保持这一点,直到你对少数课程有相当好的理解。

此外,您可以将其分解为贵公司具有的常见编程任务。一旦你有这些研究的清单是什么涉及到实施他们每个人。

最后的事情只是经验。只要你愿意,你可以研究代码,但是用实际的代码玩是不可替代的。编写程序,测试事情并查看现有代码的运行方式是学习新系统的最佳方式。

11

有关Dave Thomas(“实用程序员”Dave)的播客/访谈,here

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

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

很少有几个捷径用于大型代码。一般来说,人们必须平衡对“理解它”的追求与对“完成使命”做出尖锐务实变化的压力。

+2

感谢您指向此播客的指针。它看起来已经移动到这里:http://www.se-radio.net/2009/11/episode-148-software-archaeology-with-dave-thomas/ – skiphoppy 2011-03-07 15:06:20

2

开始编写单元测试 - 你做一些有用的东西(这可能会赚你更多的时间来了解的代码),你会得到一个深入了解入功能。另外,开始询问时,他们在这个过程上来的问题,你就可以问非常具体的问题,你可能会打动你的同事:)

1

很少有地方我经常从开始就是构建/包/部署脚本和配置文件 - 根据我们正在讨论的应用程序的大小,他们可以告诉你很多关于内部结构,外部依赖关系和突出显示进一步挖掘的内容。

接下来,您可以使用代码覆盖率工具并记录一个简单场景的覆盖范围,该场景大致指出哪些区域正在执行该场景。这种变化在追踪剖析器下运行。堆转储对于了解基本数据结构也很有用。

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

所有这些应该给你一个关于整体应用的好主意。之后,你需要启动一个调试器并开始在代码中插入代码。向同事询问他们最喜欢的断点位置 - 通常每个人都有一些位置。

如果您正在使用Java或C#,请确保知道您的IDE以及如何使用find-usages。还有更多先进的静态分析和理解工具,如Structure101(我最喜欢的),SonarJ或LattixDSM。一些UML逆向工程工具可以生成类图,但通常它们会产生太多的噪音,而手动修剪会假定您可以从不重要的角度(通常不是新代码库的情况)辨别重要。如果你得到其中一个,我建议从基本类开始,并使用“添加依赖”功能来逐步探索应用程序。

1

采取一个简单的第一个任务,并且不要急于任何地方。环顾四周,利用时间学习和了解环境。检查调用堆栈,使用调试器。当你有解决方案时,请求同行进行代码审查,并向他们学习。 又取任务,和另外一个,另一个...

你很快就会有:)

0

文档我的朋友,找经理模式寻求与代码中的JSP戏不要害怕做一些小改动,看看会发生什么,了解逻辑和构建模块,与文档不佳的公司保持联系。