C程序的OO最佳实践
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 “如果您真的想要OO糖-请使用C ++” –当我问到这一点时,我立即从我的一位朋友那里得到了答复。我知道这里有两件事是完全错误的。首先,OO不是“糖”,其次,C ++没有吸收C。 我们需要用C语言编写服务器(前端将使用Python),因此我正在探索更好的方法来管理大型C程序。 根据对象和对象交互对大型系统进行建模,使其更具可管理性,可维护性和可扩展性。但是,当您尝试将此模型转换为不包含对象(及其所有其他对象)的C语言时,您将面临一些重要的决策。 您是否创建了自定义库来提供系统所需的OO抽象?诸如对象,封装,继承,多态性,异常,发布/订阅(事件/信号),名称空间,自省等(例如GObject或COS)。 或者,您仅使用基本的C构造(struct和函数)以即席方式近似所有对象类(和其他抽象)。(例如,关于SO的此问题的一些答案) 第一种方法为您提供了一种结构化的方法,用于在C中实现整个模型。但是,这也增加了您必须维护的复杂性。(请记住,首先要通过使用对象来减少复杂性)。 我不知道第二种方法,以及它在逼近您可能需要的所有抽象方面的效果如何。 因此,我的简单问题是:在C语言中实现面向对象设计的最佳实践是什么。记住,我并不是在问如何做到这一点。这个和这个问题都在谈论,甚至有一本书。我更感兴趣的是一些现实的建议/示例,这些示例/示例解决了此问题时出现的实际问题。 注意:请不要建议为什么不应该使用C来支持C ++。我们已经超越了那个阶段。