我已经切换到一家新公司,我正在开发一个拥有巨大代码库但没有文档的产品.我想快速熟悉产品的设计和代码流程,以便尽快成为高效的会员
慢慢地,稳定地了解代码,但应该是最好和最聪明的方法应该接近代码库,以便他能够快速理解代码并开始交付?
注意:我尝试使用Star UML,并尝试对类图进行逆向工程,以便我可能对产品内部设计有一个大概的想法,但却失败了.
编辑:问题不在于了解产品的作用,而是如何设计内部结构.
使用断点修复错误和调试确实提供了实现此目的的一种方法,但我在寻找是否有更快的方法来实现这一点
在凯斯的话中:
这可能适用于某些代码库,但总的来说,我认为这是一个坏主意.你往往过于专注于细节,而一开始你想要了解大局:类是什么,通信模式是什么,等等.另外,如果你有一个分布式应用程序(客户端 - 服务器,n层)等等,或者需要很长时间才能运行它的代码可能不适合通过调试器运行它
无论我们是维护不熟悉的代码还是检查Apache模块的实现细节,如果我们能够快速遍历代码并构建我们正在查看的内容的概述,它将会有所帮助.Grep服务于我的大部分日常需求,但有些情况下它不会做.
以下是它可以提供帮助的常见示例.要找到我感兴趣的PHP函数的定义,我可以在命令行输入:
grep -r "function myfunc" .
Run Code Online (Sandbox Code Playgroud)
如果我们知道返回类型,这可以很快适应C或C++,但是如果我要列出我的类提供的每个方法,事情会变得更复杂:
grep "function " ./src/mine.class.php
Run Code Online (Sandbox Code Playgroud)
由于没有单个关键字表示C++中的函数或方法,并且因为它通常是更复杂的语法,我认为我需要某种静态代码分析工具,智能使用C预处理器或盲目信任编码器遵循严格的代码指南(空白的数量,curites的位置等)以获得这些结果.
你会推荐什么?
理解大型代码的问题以前已得到很好的解答.但是我觉得我应该再问这个问题来问我一直面临的问题.
我刚开始做学生工作.我是一名初学程序员,两个月前刚刚学习了课程.虽然在工作中,我已经交了一个代码,它是大软件的一部分.我理解该代码应该做什么(读取文件).但是在花了几周时间试图理解代码并对其进行修改以达到我们想要的结果之后,我得出结论,我需要理解该代码的每一行.代码大约是1300行.
现在,当我开始阅读代码时,我发现,例如,变量定义为:
VarType VarName
Run Code Online (Sandbox Code Playgroud)
现在VarType不是类型int或类型float.它是用户定义的类型,所以我必须去上课看看这个类型是什么.
在下一行中,我看到一个被调用的函数,如points.interpolate(x); 现在我必须进入另一个类,看看插值函数的作用.
这种情况发生了很多,这意味着即使我试图理解代码的一小部分,我也要去3或4个不同的类,并且一次性地记住它们而不会失去主要目标,这很难.
我可能不是一个熟练的程序员,但我希望能够做到这一点.我可以提出一些建议吗?
另外(当我问这个时,我听起来真的很愚蠢)什么是调试器?我希望这可以让你了解我的立场(以及再次提出这个问题的必要性).:(