可能重复: 我继承了200行意大利面代码--现在呢?
我最近被处理了一个巨大的多线程程序,没有任何评论,并被要求理解它做什么,然后改进它(如果可能的话)。
当我们需要理解别人的代码时,是否有一些应该遵循的技术?还是我们直接从第一个函数调用开始,然后继续跟踪下一个函数调用?
Linux上的C++ (带多线程)
发布于 2012-11-06 08:47:15
这将取决于语言,但是(我知道这是一个非常古老的工具) IMHO --您不能超过一个简单的代码流程图和相关的数据流图。
在过去的日子里,人们从需求中设计代码的方式基本上是一样的。
从整个程序开始然后分解..。
显然,您将为每个(非平凡的)函数做一个单独的图表..。每个图表的细节取决于功能的复杂性。
在类的情况下,将每个类视为一个独立的、独立的块--从系统的角度来看,每个类都应该(如果设计正确)能够被视为“黑匣子”。
将整个系统分解为类,然后将类分解为数据结构和函数等。
现代工具,如UML,有自己的位置,但对于逆向工程,则坚持使用基本工具。
发布于 2012-11-06 13:19:19
如果代码周围有一些单元测试,这将是非常有帮助的-单元测试通常可以作为文档具有辅助功能。
然而,遗留代码通常没有测试。也许写一些会是一个很好的方法来弄清楚到底是怎么回事?
然后,您可以将意大利面代码重构为易于阅读、编写良好的代码。
发布于 2012-11-06 14:31:31
从根本上说,您希望跟踪科学方法。即观察、假设、试验。每一阶段都可能有各种适合的技术。
运行您更改的代码/单元测试,并再次观察!如果你是对的,把它记录下来(评论等)然后转到下一件事情(这可能是整理/重构代码)。如果不是,根据你的新数据做出一些新的假设。
https://softwareengineering.stackexchange.com/questions/174770
复制相似问题