设计和可读性

sud*_*03r 3 c++ oop

我正在研究用C++编写的项目,该项目涉及修改现有代码.代码大量使用面向对象的原则(设计模式),也使用智能指针等复杂的东西.
在尝试理解代码时gdb,我必须非常小心各种子类调用的各种多态函数.

每个人都知道在代码中使用设计模式和其他复杂内容的目的是使其更可重用,即可维护但我个人觉得,理解和调试面向过程的代码要容易得多,因为你肯定知道哪个函数实际上是叫做.

非常感谢处理此类情况的任何见解或提示.

PS:我对OOP和大型项目的经验相对较少.

CB *_*ley 11

gdb它不是理解代码的工具,它是一种低级调试工具.特别是在较大的项目中使用C++作为更高级别的语言时,在调试器中逐步调试代码并不容易.

如果你认为智能指针和设计模式是"复杂的东西",那么我恭敬地建议你研究它们的使用,直到它们看起来并不复杂.它们应该被用来使事情变得更简单,而不是更复杂.

虽然程序代码可能很容易理解,但使用面向对象的设计主体可以提供构建一个非常大的项目所需的抽象,而不会变成不可维护的意大利面条.

对于大型项目,阅读代码比运行调试器更重要.如果函数在多态基类上运行,那么您需要阅读代码并了解它正在执行的抽象操作.如果派生类的行为存在问题,那么您需要查看覆盖以查看它们是否与基类合同一致.

当且仅当您对调试器可以回答的特定情况有特定问题时,您应该在调试器中单步执行代码.问题可能类似于"是否正在调用此覆盖函数?".这可以通过在overriden函数中放置一个断点并逐步调用您认为应该调用overriden函数以查看断点是否被命中来解决.

  • gdb是一个理解代码的工具.可以说这就是它的全部.除此之外,这是一个很好的答案.+1. (3认同)