11

我不知道,有人告诉我,以前的开发人员在学习并直接进入编码方面做得很好,没有什么大问题。我想知道我是否做错了,我要求我的经理在这里与一些高级程序员进行一些简短的会议。是谨慎地完成这个时间敏感的跟踪器,还是赶在最后期限前完成?

顺便说一句,以前维护这个应用程序的程序员都在公司不到一年就走了。不知道有没有什么关系。

4

8 回答 8

11

一年前在 Slashdot 上有一个关于这个的帖子。在通常的 Slashdot 杂乱无章中,有一些很好的答案;也许有人可以在这里提取它们。

一些不错的方法是使用调试器、Doxygen(当然)(以及 ctags/etags/GNU Global 等相关工具)、放弃几本关于这个主题的书逐步完成程序:Michael 的《有效地使用遗留代码》 Feathers and Code Reading: The Open Source Perspective by Diomidis Spinellis。

而且我个人推荐阅读PG Wodehouse Method Of Refactoring;如果没有的话,它至少是一个有趣的阅读!

于 2008-12-23T00:12:36.237 回答
5

阅读单元测试。没有单元测试?写一些单元测试。

于 2008-12-23T01:16:51.163 回答
4

你看到这个问题了吗?

一致的答案似乎是:
深入研究并修复错误。选择一个仅限于代码库的一小部分。经常使用调试器。

于 2008-12-23T00:32:14.810 回答
3

我做过几份类似的工作,所有的程序员都离开了公司。我称之为红旗。

该项目没有文档可能并非巧合,但很难判断其中是否存在因果关系。真相可能是以下任何一种:

  • 程序员离开了,因为管理层不允许他们记录他们的工作。
  • 管理层要求程序员离开,因为他们拒绝记录他们的工作。
  • 程序员在项目变得太难工作后离开,没有文档。

熟悉代码的最好方法可能是编写测试。为自己设置一个生成代码覆盖率报告的单元测试工具。编写运行所有代码的测试。代码覆盖可视化可帮助您发现尚未练习的边缘情况。当你经历这个过程时,我保证你会学到很多关于代码是如何工作的。作为附带的好处,您将生成一个完整的单元测试套件。

其他人提到,获取生成 API 文档的工具是另一种选择。此类文档仅供参考。它对于向您展示如何或何时最好地使用给定的类或方法没有用处。

另一个练习是为系统的各个部分构建 UML 图。即使代码的面向对象架构存在缺陷,序列图也很有用

于 2008-12-23T00:20:25.130 回答
2

我会说有很多测试,如果他们设置了某种单元测试框架,那么你很好,如果没有,那么你可能想要开始一个。因为几乎没有什么比在你试图修复另一件事时破坏某件事更令人沮丧的了。

作为参考,你可能想看看这个,这个家伙似乎比你更紧张:

继承-a-php-噩梦-从哪里开始

于 2008-12-23T00:13:54.533 回答
1

哪种编程语言?代码库有多大(1k、10k、100k 行?)

无论如何,我建议使用Doxygen创建易于浏览的 HTML 交叉引用。

于 2008-12-23T00:01:13.420 回答
1

如果它足够小(比如 10,000 行或更少),我已经在老式列表中取得了相当程度的成功。打印出代码,拿一些荧光笔和那些彩色的便利贴标记,然后查看清单、涂鸦笔记、查找参考资料并拼凑整体结构。去一个安静的地方做这件事,然后花时间检查代码。

如果它是用你可以使用 ctags 或类似的东西写的,拿一台笔记本电脑,这样你就可以搜索代码。

于 2008-12-23T00:16:27.227 回答
1

我总是做的第一件事(在 VisualStudio 中)是为解决方案中的每个项目创建一个类图。这让我看到了我正在使用的图形表示。

出于某种原因,我只是带着黄色的便笺簿完成了主要课程,并记下了关于什么与什么对话的笔记。这似乎对我有用。真的不知道为什么,或者为什么它比仅仅阅读代码更好。

此外,如果有一些令人困惑的代码,您不知道它应该如何工作,那么通过调试器运行它并逐步执行它。我总是尽量保持调用堆栈可见,以便对不同的代码路径有所了解。

最后一件事(这可能不会发生在每个人身上)是通过探查器运行它。您不一定要寻找性能数据,但您对捕获的代码路径感兴趣。它实际上对于查看运行时实际发生的情况非常有用。

于 2008-12-23T02:49:49.430 回答