构建C应用程序?

我打算用C开发一个应用程序。我的编程经验一直是面向对象的语言。 因此,在设计应用程序时,我总是在类,接口,inheritance,多态等方面进行思考。

我看过的所有C书都涉及如何用C编程或专注于特定主题,我在C中找不到任何关于应用程序架构的讨论。那么当OOPfunction是什么时,你如何构建一个C应用程序呢?无法使用? 你如何保持一切模块化和组织良好,避免代码重复(没有OOP似乎会有很多代码重复)?

编辑:我不是在寻找’如何在C中编写OOP代码’的答案。 我正在寻找构建C应用程序的标准实践方法,因此它们是模块化的,组织良好。 如果标准的练习方法是破解一些OOPfunction那么这是公平的,但如果不是那么那么就没有必要告诉我沿着那条路走下去。

可以用C练习TDD,参见C编程和TDD 。

如果您习惯练习TDD,您知道它可以帮助您保持代码组织良好和模块化。

这是一种不同的思维方式。 C的核心理念可归纳为:

 data + algorithms = programs 

所以要用C设计一个应用程序:

  1. 您需要仔细考虑数据是什么,并定义反映良好的结构,并促进不同数据视图之间的关系。

  2. 您需要考虑哪些算法将对哪些数据以及它们产生的数据进行操作。 这有助于澄清您应该拥有的struct ,并帮助显示应该一起阻塞的内容以创建可重用的代码块。

  3. 从OOP方法转向这种方法的一种方法是想象一个struct +一个.c文件=一个类,并在.h文件中放入结构定义和外部可访问的函数(公共方法)。

  4. 你必须编写很多代码来做无聊的事情,比如内存分配和释放以及所有的爵士乐。 它没有听起来那么糟糕,而是将其纳入您的设计中。

您可以将C项目设计为面向对象项目,然后按结构替换类。 在本主题和本主题中向我推荐了这个

另外,要创建可重复使用的C软件,请阅读David R. Hanson撰写的这本书

https://sites.google.com/site/cinterfacesimplementations/

基本的OOP最好用Alex Schriner的OOC.pdf书中提到的技术完成

首先,您将确定组件及其相互作用以解决问题。 然后在每个组件内部,可以使用以下实践。

  1. 首先设计公共function。
  2. 设计函数将起作用的数据结构(即struct)
  3. 修改公共函数以将相应的结构作为指针参数。 [c中没有实例变量概念。 你需要定义一个结构并在函数之间传递结构]。
  4. 在头文件中将具有相关数据结构的函数分组。
  5. 在单独的c文件中提供公共函数的实现,该文件包含您定义的头文件。
  6. 将所有私有/帮助方法设置为静态,因此它们对其他c文件不可见。
  7. 由于C中没有名称空间概念,因此请确保您的公共函数与现有库函数不冲突。 有些人正在使用名称修改,如{标题文件的短名称} _ {function name}
  8. 分配和释放内存是开发人员的责任。 最好有初始化和自由function来分配和清除内存以及设计的公共function。
  9. 遵循您熟悉的编码风格。
  10. 将每个组件设计为共享库,这样您就不需要每次都编译它们。