代码之家  ›  专栏  ›  技术社区  ›  Luis B

对于C/C++来说,什么时候不使用面向对象编程是有益的?

  •  20
  • Luis B  · 技术社区  · 16 年前

    当我用C/C++编码时,我发现自己总是试图将所有内容都融入OOP方法中。但我意识到,我并不总是需要把一切都强加给这个模式。使用OOP方法与不使用OOP方法的优缺点是什么?我更感兴趣的是不使用OOP的利弊(例如,不使用OOP有优化的好处吗?)。谢谢,让我知道。

    17 回复  |  直到 16 年前
        1
  •  29
  •   Brian R. Bondy    16 年前


    何时不使用OOP:

    • 在圆孔中放置方桩: 不要在不需要的时候把所有东西都包在类中。有时没有必要,额外的开销只会让你的代码更慢、更复杂。
    • Joe Armstrong 谁发明了Erlang:

    面向对象的问题 香蕉和整个丛林。

    我不同意通常的观点 这是一种更好的编程方式。

    你可以在这篇题为 Bad Engineering Properties of Object-Oriented Languages .

    Wikipedia's Object Oriented Programming page 还讨论了一些优缺点。

        2
  •  8
  •   Andrew Shepherd    16 年前

    How Non-Member Functions Improve Encapsulation .

    根据之前一个大型项目的经验,我完全同意他的观点。

        3
  •  4
  •   DeusAduro    16 年前

        4
  •  2
  •   wisty    16 年前

        6
  •  2
  •   Ed Kirwan    16 年前

    对象支持的接口。

    微小或几乎不变,因此潜在连锁反应的成本是

        7
  •  2
  •   Stack Overflow is garbage    16 年前

    • C++风格的泛型编程

    前者的唯一优点是简单性和向后兼容性。如果你正在编写一个小而琐碎的应用程序,那么摆弄类只是浪费时间。如果你想写一个“Hello World”,只需致电 printf

    你需要一个类来封装一些简单的概念,无论如何都要根据OOP原则进行设计。

    代码。有时,实现这一点的方法是使用OOP原则,但通常,使用通用编程原则或函数式编程可以获得更好的代码。

        8
  •  1
  •   Daniel Brotherston    16 年前

    因此,具体来说,在我的书中,不太可能发展壮大的小型项目和以单一算法为中心的项目似乎都是非面向对象编程的候选者。此外,如果您可以将规范编写为一组线性步骤,例如,不需要维护交互式GUI或状态,这也是一个机会。

        9
  •  1
  •   mouviciel    16 年前

        11
  •  1
  •   ialt    6 年前

        12
  •  0
  •   Breton    16 年前

    太长了,读不下去了取决于问题。

        13
  •  0
  •   dtroy    16 年前
        14
  •  0
  •   DigitalRoss    16 年前

    C++,使用OOP--C,不,有一些例外

    但如果你知道程序会变得如此复杂,你一开始就不应该用C编写它。..

        15
  •  0
  •   Tim Post Samir J M Araujo    16 年前

    在C中,有时我会“模拟”面向对象的方法,在运行多个实例时,通过定义某种对回调等事情进行粒度控制的构造函数。

    MyEvent *ev1 = new_eventhandler();
    
    set_event_callback_func(ev1, callback_one);
    ev1->setfd(fd1);
    
    MyEvent *ev2 = new_eventhandler();
    
    set_event_callback_func(ev2, callback_two);
    ev2->setfd(fd2);
    
    destroy_eventhandler(ev1);
    destroy_eventhandler(ev2);
    

        16
  •  0
  •   Patrick    16 年前

    当然,我仍然在代码中使用其他对象(std::vector等人),我使用名称空间来帮助组织我的函数,但为什么要把代码放在对象中,直到它有用为止?同样,不要回避面向对象解决方案中的自由函数。

        17
  •  0
  •   Adrian McCarthy    16 年前

    std::string