了解java中大公司项目的最佳方法是什么?
答案 0 :(得分:11)
有一个很好的播客/采访戴夫托马斯(“实用程序员”戴夫)关于这个话题,here。
他称之为“软件考古学”。
由于许多不同的原因,组织经常失去对其代码库的控制。知识被遗忘,人们离开。人们可能很容易将代码库误认为考古问题,因为不是因为基于它的关键任务应用程序在需要修改或增强某些东西之前一直在继续,然后突然间你有一大堆没有人理解的源代码但这已成为一夜之间世界上最重要的事情。
与大桶代码达成协议的捷径很少。一般来说,人们必须平衡对“理解它”的追求与实现“完成使命”的尖锐实用变革的压力。
答案 1 :(得分:10)
你永远不会知道公司的每一段代码的每一行。你能做的是理解课程,他们做什么,以及他们如何相互联系。
首先从类的角度对代码流的方式进行最基本的理解,重点关注完成大部分工作的大型类。一旦你理解了发生了什么,就开始关注较小的课程。保持这种状态,直到你对一些课程有很好的理解。
此外,您可以将其分解为公司拥有的常见编程任务。一旦你有了这些研究的清单,实施每一项研究都会涉及到什么。
最后一件事就是体验。您可以根据需要学习代码,但无法替代实际代码。编写程序,测试内容以及查看现有代码的运行方式是学习新系统的最佳方式。
答案 2 :(得分:2)
开始编写单元测试 - 你做了一些有用的事情(这可能会让你有更多的时间来理解代码),你可以深入了解这些功能。此外,在这个过程中提出问题时,你可以提出非常具体的问题,你可能会给同事留下深刻的印象:)
答案 3 :(得分:1)
我经常开始的几个地方是构建/打包/部署脚本和配置文件 - 根据我们正在谈论的应用程序的大小,他们可以告诉你很多关于内部结构,外部依赖关系和突出显示的内容深入挖掘。
接下来,您可以使用代码覆盖率工具并记录一个简单场景的覆盖范围,该场景大致指出了执行它的区域。这种变化在跟踪分析器下运行。堆转储对于了解基本数据结构也很有用。
最后,在各种情况下查看应用程序日志,虽然这些通常是太多的信息,您需要知道您在寻找什么。
所有这些都应该让您对整体应用有所了解。之后,您需要启动一个调试器并开始在代码中查找。询问你的同事他们最喜欢的断点位置 - 通常每个人都有一些。
如果您正在使用Java或C#,请确保您了解IDE以及如何使用find-usages。还有更高级的静态分析和理解工具,如Structure101(我最喜欢的),SonarJ或LattixDSM。
一些UML逆向工程工具可以生成类图,但通常它们会产生太多噪音并且手动进行修剪假设您可以从不重要的内容中识别重要内容(通常情况下新代码库不是这样)。如果你得到其中一个,我建议从基本类开始,并使用“添加依赖项”功能逐步浏览应用程序。
答案 4 :(得分:1)
做一个简单的第一项任务,不要急于任何地方。环顾四周,利用时间学习和了解环境。检查调用堆栈,使用调试器。当您有解决方案时,请与您的同行进行代码审查,并从中学习。 然后采取另一个任务,另一个,另一个......
你很快就会到达那里:)
答案 5 :(得分:0)
文档我的朋友,寻找经理模式寻求jsp游戏与代码不要害怕做出小的改变,看看会发生什么,理解逻辑和构建块,留在文档较差的公司。