2

作为一个缺乏行业经验的初级程序员,我发现学习一个基于许多我不熟悉的技术的新项目是令人沮丧的。我正在从事的项目有大约 150 个类和 15000 行代码,并且它广泛关注我零经验的套接字和安全编程,我不知道应该从哪里开始。

由于手头的文档和帮助有限,自学是我尝试从整体上理解这个项目的最佳资源。我经常发现自己花了太多时间学习产品的微不足道的功能,而错过了我真正应该关注的关键类……花费这么多时间的主要原因是我经常不得不研究 Java API每隔几分钟参考一下以了解一个小代码块......我相信我最终会通过反复试验来学习它,但我相信我可以使用一些有用的建议和指导方针:)

4

6 回答 6

2

最初,您不需要了解每一行代码。

借用一个高级开发人员半小时,请他给你一个架构的鸟瞰图——主要的代码块是什么,它们如何交互,以及用户/使用如何通过系统驱动数据。

然后花一些时间调查您认为(在解释之后)的模块的来源,这将使您对“它是如何工作的”有最好的了解。

我有一个(可能很奇怪)打印大块源代码并用打印输出覆盖地板的习惯。然后我可以跪下来用笔在地板上四处爬行,逐点画箭头,并在部分周围画出——我发现以 2D 显示代码更容易弄清楚。它还可以制作大量笔记,帮助我更详细地理解流程。

不久之后,您将开始识别表征代码的习语(程式化的做事方式),最终您将找到进入作者思维方式的途径。那么一切都会简单很多。

当你在地板上爬来爬去时,随身携带一台笔记本电脑+谷歌,这样你就可以破译你遇到的任何奇怪的事情。另外:彩色荧光笔 FTW。

(至少)两次通过了解源代码。第一次不要试图理解任何细节……试着去感受“运动”——数据去哪里,执行去哪里。这将为您的代码心理模型提供一个框架。当你下一次经历时,你可以开始分解细节,但自上而下的方法总是让我更容易。

如果你不熟悉技术、语言或环境,那就看看周围有没有什么书可以拿。现实世界中的可见空间比您在计算机屏幕上所能容纳的要多得多,并且在笔记本电脑上使用谷歌,书中的语法/库参考以及您周围的代码(至少对我而言)构成了整个过程非常简单。

于 2009-08-07T19:00:38.893 回答
1

学习代码库需要时间。我认为新开发人员熟悉代码库的一般规则是大约 3 个月。

唯一对我有帮助的事情是进行实验,看看会发生什么,并熟悉 API。

于 2009-08-07T18:56:21.320 回答
1

结对编程。与有经验的人一起处理代码。帮助他或她;让他或她帮助你。当您编写更有经验的开发人员的代码时,您将了解代码的一些重要方面——因为有经验的开发人员知道它们。您将开发一个与经验丰富的开发人员相当接近的软件心智模型,而不是追逐自己的死胡同和老鼠洞。一对。

于 2009-08-07T19:01:05.443 回答
1

我想到了几件事:

  1. 花一点时间熟悉 JDK 及其标准类。掌握知识需要时间和更多检查 API 规范,但您也可以花一些时间浏览而无需查找特定内容。
  2. 如果您的项目正在使用一些框架或库,您通常可以通过阅读项目网站上的“介绍”页面来了解这些为项目带来了什么。我认为这可能对您特别有帮助,因为您将不熟悉项目中使用的一些技术作为挫败感的来源。
  3. 如果有任何功能集成或回归测试,这些通常是了解项目主要入口点的好方法。在尝试理解小细节时,很好地掌握项目的高级功能通常很有帮助。
  4. 如果你能在你的团队中找到一位导师来指导你,那可能会有很大帮助。

我认为,根据您提到的项目的规模,这可能是对您的生产代码的温和介绍。现在看起来可能很大,但 15000 行代码只是你在职业生涯中最终可能从事的项目的较小部分。

还要记住,这对你来说必然是一次学习经历。这是您在行业中的第一个项目之一,因此可能需要一段时间才能习惯。请记住,您不是第一个必须在不熟悉的代码库中游泳的人。

祝你好运!

于 2009-08-07T19:29:15.450 回答
0

如果您有测试,请研究它们。如果没有,那就写一些。

于 2009-08-07T19:05:01.410 回答
0

我建议打印出我的老师曾经称为“类图”的内容,其中只有类名、方法名和成员名。然后在桌子/墙上排列表格,找出哪个类与哪个类对话,哪个方法与哪个方法对话等。在类/方法之间制作箭头和连接。试着感受一下代码。一开始,理解一行代码的作用并不重要,重要的是方法/类应该做什么,这样你才能理解基本的数据流。

于 2013-07-24T13:59:43.530 回答