是否有任何已知的设计原则、最佳做法而设计的模式,一个可以遵循在设计一C的项目?或者有用设计原则为程序性(必须)编程一般?

(我的孩子的面向对象的一代'和必须设计一个大型项目C的第一次)

有帮助吗?

解决方案

信息隐藏-作为支持通过帕纳斯(软件基础知识).

小心管理的头和知名度:

  • 一切都在来源文件,该文件可以隐藏自外部世界;只有记载的外部界应该被暴露。
  • 一切暴露声明的标题。
  • 这头是使用其中的功能性的需要(并在那里被定义)。
  • 标题是自足的-当你需要它,你使用它,而你没必要担心什么其他的头我还必须包括',因为该标题可确保它的工作通过包括任何东西需要使它的工作。
  • 标题是自我保护的-这样不要紧,如果它包括多次。

    #ifndef HEADER_H_INCLUDED
    #define HEADER_H_INCLUDED
    ...rest of header contents, including other #include lines if necessary
    #endif /* HEADER_H_INCLUDED */
    
  • 设计的功能上工作的"对象"(通常是结构)和使用这些功能,而不是闲逛的内部结构中的代码使用。认为它作为自我强加的封装。

其他提示

有一个良好的免费的网上书,名为 面向对象编程与ANSI C, 涵盖的主题编写面向对象的代码。一个 google搜索 对于"面向对象的C"还产生其他一些良好范例和资源。

如果你的项目是安全至关重要, MISRA-C 是一个很好的一套规则。它的目的是主要用于嵌入式c,但这可能是有用的,在其他领域。

我认为自己是一个OO编码器,并且我做了很多工作嵌入式。最好的建议我可以得到的,特别是对大型项目,不要过度。创建一个完整的OO框架上的ANSI C可以是非常诱人,但这需要大量的时间和精力去得到它的权利。爱好者,你得到的更多的时间,你会花调试框架而不是工作上的 真的 的项目。方法的任务有一个清醒的头脑,以及一个好的、坚实的把握 YAGNI.好运!

我的三个建议:

  • 编写单元的测试。他们会帮助你为零的设计套房问题。更多依赖(仅)在预谋的思想。
  • 有一个存储器的泄漏检测器(有各种库,在那里)安装和运行,从第一天。有这个图书馆打印出所有的泄漏尽快节目/试验的出口。这会让您捕捉泄漏,尽快为您介绍,从而使其固定少得多的痛苦。
  • 写的面向对象的代码。不难。虽然可以仿效的方法压倒一切的,我建议你开始仿真的很简单的对象。即使这种简单的机制可以给你伟大的里程。

这里有一个例子:

typedef struct Vector {
  int size;
  int limit;
  int* ints; 
} Vector;

Vector* Vector_new() {
  Vector* res = (Vector*) malloc(sizeof(Vector));
  res->limit = 10;
  res->size = 0;
  res->ints = (int*) malloc(sizeof(int) * res.limit);

  return res;
}


void Vector_destroy(Vector* v) {
  free(v->ints);
  free(v);
}

void Vector_add(Vector* v, int n) {
  if(v->size == v->limit) {
    v->limit = v->limit * 2 + 10;
    v->ints = realloc(v->ints, v->limit);     
  }

  v->ints[v->size] = n;
  ++v->size;
}

int Vector_get(Vector* v, int index) {
  if(index >= 0 && index < v->size)
    return v->ints[index];

  assert false;
}

面向对象是方法不是一个技术。因此,我的第一点意见是停止思考它作为程序编程。

到e.詹姆斯,你不想要试着重新创建一个面向对象的语言或假装你有能力组成的。你仍然可以做正确的事情的执着于一些简单的原则:

  1. 试驾一切。
  2. 找到什么样的变化和封装。
  3. 设计接口。

SEI CERT C编码标准提供良好规则和通用性好做法集与事情你应该尽量避免使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top