构建C应用程序?

时间:2013-03-25 08:59:18

标签: c architecture

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

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

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

5 个答案:

答案 0 :(得分:6)

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

data + algorithms = programs

所以要用C:

设计一个应用程序
  1. 您需要仔细考虑数据是什么,并定义反映良好的struct,并促进不同数据视图之间的关系。

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

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

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

答案 1 :(得分:4)

您可以将C项目设计为面向对象项目,然后按结构替换类。这是topictopic

中推荐给我的

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

可以使用C练习TDD,请参阅C programming and TDD

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