要想设计一个良好的程序,建议采用SOLID原则,若考虑了SOLID,可以使程序在模块内具有高内聚、而模块间具有低耦合的特点。
    SOLID原则包括5方面的内容:

    • S—-单责任原则(SRP)
      一个模块只做一件事,责任单一,以便修改和错误定位。
    • O—-开闭原则(OCP)
      一个模块要对扩展开放,对修改关闭。
      (1)通过增加代码来扩展功能,而不是修改已经存在的代码。
      (2)若客户模块和服务模块遵循同一个接口来设计,则客户模块可以不关心服务模块的类型,服务模块可以方便扩展服务(代码)。
      (3)OCP支持替换的服务,而不用修改客户模块。
    • L—-李氏代换原则(LSP)
      客户模块不应关心服务模块的是如何工作的;同样的接口模块之间,可以在不知道服务模块代码的情况下,进行替换。—-接口或父类出现的地方,实现接口的类或子类可以代入。
    • I—-接口隔离原则(ISP)
      客户模块不应该依赖大的接口,应该裁减为小的接口给客户模块使用,以减少依赖性。如Java中一个类实现多个接口,不同的接口给不用的客户模块使用,而不是提供给客户模块一个大的接口。
    • D—-依赖反转原则(DIP);
      (1)高层模块不要依赖低层模块;
      (2)高层和低层模块都要依赖于抽象;
      (3)抽象不要依赖于具体实现;
      (4)具体实现要依赖于抽象;
      (5)抽象和接口使模块之间的依赖分离。
      用函数指针,象接口一样,也可以去掉两个函数之间的直接依赖。

    参考:
    【1】《嵌入式C语言的测试驱动开发方法》【Test-Driven Development for Embedded C】James W. Grenning2011