加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 设计和可读性

发布时间:2020-12-16 10:50:15 所属栏目:百科 来源:网络整理
导读:我正在研究用C编写的项目,该项目涉及修改现有代码.代码大量使用面向对象的原则(设计模式),也使用智能指针等复杂的东西. 在尝试使用gdb理解代码时,我必须非常小心各种子类调用的各种多态函数. 每个人都知道在代码中使用设计模式和其他复杂内容的目的是使其更
我正在研究用C编写的项目,该项目涉及修改现有代码.代码大量使用面向对象的原则(设计模式),也使用智能指针等复杂的东西.
在尝试使用gdb理解代码时,我必须非常小心各种子类调用的各种多态函数.

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

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

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

解决方法

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读