Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C&x2B中处理大型项目+;? 现在我知道了C++的一些基本知识,我必须承认,我仍然很难处理其他C++编写的代码。这可能是固有的,因为C++允许复杂对象层次结构,如果至少一个C++程序没有任何进一步的注释或指令,那么它很难掌握。 我的问题是对你中的有经验的C++程序员来说,更大的问题是:如何能理解其他人编写的大型C++项目? < /P>_C++_Visual Studio_File Io_Coding Style - Fatal编程技术网

如何在C&x2B中处理大型项目+;? 现在我知道了C++的一些基本知识,我必须承认,我仍然很难处理其他C++编写的代码。这可能是固有的,因为C++允许复杂对象层次结构,如果至少一个C++程序没有任何进一步的注释或指令,那么它很难掌握。 我的问题是对你中的有经验的C++程序员来说,更大的问题是:如何能理解其他人编写的大型C++项目? < /P>

如何在C&x2B中处理大型项目+;? 现在我知道了C++的一些基本知识,我必须承认,我仍然很难处理其他C++编写的代码。这可能是固有的,因为C++允许复杂对象层次结构,如果至少一个C++程序没有任何进一步的注释或指令,那么它很难掌握。 我的问题是对你中的有经验的C++程序员来说,更大的问题是:如何能理解其他人编写的大型C++项目? < /P>,c++,visual-studio,file-io,coding-style,C++,Visual Studio,File Io,Coding Style,如果我试图理解一个大型项目(例如,10000行代码)是如何编写的,我很容易迷失方向,可能会迷失数周。类的函数是指向不同类的函数的指针,这些函数可以重载,也可以不重载,也可以不被其他类继承,等等 是否有任何实用的提示可以加快我阅读和理解大型C++项目的能力?有没有关于这些技巧的教程?请详细说明!:) 我从事专业编程已经有一段时间了,因此,在我之前,我曾多次被别人所编写的代码库所传承。理解从来都不容易,尤其是当代码不一致时 不过,首先要认识到的是,在新的代码库中学习您的方法与重新发现您已经有一段时间

如果我试图理解一个大型项目(例如,10000行代码)是如何编写的,我很容易迷失方向,可能会迷失数周。类的函数是指向不同类的函数的指针,这些函数可以重载,也可以不重载,也可以不被其他类继承,等等


是否有任何实用的提示可以加快我阅读和理解大型C++项目的能力?有没有关于这些技巧的教程?请详细说明!:)

我从事专业编程已经有一段时间了,因此,在我之前,我曾多次被别人所编写的代码库所传承。理解从来都不容易,尤其是当代码不一致时

不过,首先要认识到的是,在新的代码库中学习您的方法与重新发现您已经有一段时间没有接触过的代码库没有太大区别。因此,是否由他人的旧自我书写并不重要;而且,由于您可能会设法重新发现以前使用过的代码库,因此您也应该能够发现新的代码库。不要失去希望

第二件要认识到的事情是,理解是一个模糊的术语,当然有不同的程度。很多时候,没有人要求你完全理解事情的来龙去脉;更可能的情况是,您将被要求理解代码库中存在bug或应开发某些新功能的部分。因此,随着时间的推移,你将逐渐了解各个部分,你将不可避免地对你工作最多的部分有更深的了解,而其他部分可能相对抽象,甚至完全模糊。没关系,人类已经很久没有尝试去学习所有需要学习的东西了

话虽如此,您可以尝试以下几个理解轴:

  • 您应该寻找体系结构:一件好事是跟踪库依赖关系(这里Makefile/Project应该有帮助),这将为您提供构建应用程序的粗略技术块。可执行文件通常是依赖树的叶子
  • 您应该查找数据流:应用程序的触发器是什么(直接调用还是作为回调调用)?这些数据所遵循的步骤是什么(大致上,只是一个草图)。不要犹豫,专注于一个特定的狭义用例,并使用调试器来跟踪事情,不要试图在一开始就挖得太深;只是感觉一下而已
还有其他一些axis可能有助于对编写应用程序的领域有一些了解。对域的理解很有用,因为它为您提供了关于应该发生什么的关键洞察,并帮助您破译注释/函数名

  • 用户文档:这是用来做什么的?如果你能安排一个演示,它通常是非常有用的,否则你可以尝试自己玩(在测试环境中)
  • 测试:测试什么?向用户公开了什么
  • 持久数据:什么是序列化的?数据库中保存了什么?持久性数据是在某个点被访问的,因此如果您理解它是何时读/写的,那么它会有所帮助

如果它是一个正在运行的产品,并且您可以“调试”它,那么从查看一个特定功能开始

从用户的角度(用户界面、行为、输入、输出等)了解它是如何工作的

一旦您从外部了解了该特性,只需查找该特性的代码(仅该特性);起点可以是菜单的处理程序,也可以是对话框或鼠标/指针事件的处理程序

从那里;手动跟踪一个动作或子功能的代码;跳过深层内部库(目前将其视为黑盒)并了解其工作原理

一旦您了解了代码的这一部分,就可以深入了解从上层代码调用的库API

慢慢来。 不要试图一下子理解一切。 绘制依赖关系的示意图(笔和纸)(保持高水平,开始时没有类依赖关系)


祝你好运。

你提到的问题没有明确而简单的答案。然而,这里有一些提示:

  • 开始时,试着随机记住所有的事情。目录、类、模板参数等的名称。这听起来毫无意义,但仍然有意义
  • 在使用代码时,请始终思考“我以前是否看过此函数/param/etc?”如果答案是肯定的,请更多地使用这段代码。如果没有,只要基本掌握并继续
  • 随着时间的推移,你会发现越来越多的声音清晰易懂
  • 由于项目的规模和复杂性差异很大,所以不可能给出任何精确的值。不要期望简单而直接的结果
  • 其他要点:

  • 你肯定需要一个源代码浏览器。花时间学习如何使用它。很好的例子是。这不是我的网站!!!我有自己的网站。我在这里不提
  • 如果您看到一个函数被调用了500次,那么与只被调用一次的函数相比,了解这个函数的有用性要高出500倍
  • 最好是掌握项目的架构。要做到这一点,必须记住项目可能没有弧