嵌入式开发人员编写可重用的固件需要创建干净的应用程序接口(API)。该API需要经过深思熟虑,以便使重用变得容易和高效。理想情况下,API应该至少具备这六个特征。
特征1——显而易见,易于理解
就像任何一个软件可以从一个应用程序重用到下一个应用程序一样,API应该简单、明显、易于理解。并且要记住!当API不一致并且使用看似随机的语法时,使用现有的组件或库会非常烦人。你不希望用户为了找到正确的调用或操作而不断地查看文档。
特征2——可扩展
技术以惊人的速度变化,有时这些变化需要对API进行添加或修改。因此,API应该以这样一种方式开发,即它可以很容易地扩展以包含新的特性,而不必从头重写API或进行彻底的检查。API在保持与以前版本一致性的同时添加新功能的能力是决定其长期生存能力的一个关键因素。
特征3——具有高内聚力
内聚性是指一个模块的元素,或者在这种情况下是API,属于一起的程度。低内聚力的一个例子是将微控制器的所有外设功能集中到一个接口中。界面将会很大且难以操作。相反,微控制器外设功能可以分解成单独的模块,每个模块都有特定于单个外设的API函数,以增加凝聚力。
特征4——利用抽象数据类型
在嵌入式开发中,一个好的API将在不止一个系统、平台和MCU上使用。系统之间的实现细节可能需要略有不同,但是接口需要保持一致。抽象数据类型的使用有助于将数据的使用与实现细节分开,并有助于使接口更具可移植性。
特征5——使用封装和数据隐藏
一个好的API应该遵循面向对象软件的最佳实践,即使该软件是用c语言编写的不放眼全球。相反,通过get和set helper函数执行对关键数据的访问。API还应该尽可能少地暴露给外部世界,也就是说,只暴露API用户需要知道的东西。本质上,API应该以黑盒的方式提供它的功能。用户不需要知道API的实现细节,只需要知道使用接口的前置和后置条件。
特征6——遵循“少即是多”的原则
最好的API能够通过几个简单的接口提供关键的系统功能。开发人员有时会受到诱惑,通过API暴露外设、芯片或应用程序库的每一个可能的功能。相反,他们应该仔细考虑API,尽量减少它暴露的特性。许多复杂而笨拙的API可以被重构为更简单的界面,用户会发现更易于管理。
在嵌入式开发中,API对于可重用软件的开发至关重要,API的正确设计可以确保它在未来几年都有用。一个好的API还应该具备哪些特征?