「编程模型」C++ 封装资源

蓝月亮
发布于 2020-9-2 15:53
浏览
0收藏

引子
最近 2 个月在做一个嵌入式 C++ 项目,Soc 提供的 API 都是 C 接口的,剩下的业务功能开发就全靠自己动手实现了。一般这类项目,有直接用 C 开发的,也有用 C++ 封装一下来降低复杂度。

 

场景
这类 C 接口中,有很大一部分是资源管理和操作的,这里的资源一般指使用前需要申请,使用后需要释放的某种有限的东西。操作系统中带有 Open、Close类似接口的都属这类,如文件、网络等,当然也有自己封装的资源,以及第三方库的。

使用资源,最麻烦的就是手动管理,项目复杂时,这里就会成为 Bug 之源。操作资源的基础版本是过程式的,全手动管理,也是一般 C 语言的惯用做法。

「编程模型」C++ 封装资源-鸿蒙开发者社区

以上代码只是示意下使用场景,实际项目中的情况会比这个复杂几倍,一个子系统的出错处理轻松达 FAIL7。

类似这样的代码,最大的缺点就是没有可扩展性,只能为特定的场景量身定制;还有就是烧脑,需要很仔细的分析和检查;当然,如果不想烧脑,那就需要花费大量时间来调试,最终也能调出来。

 

解决方案
C++ 类的构造函数和析构函数,刚好能对应资源的申请和释放。这样,可以通过控制类实例的作用域来让资源的申请和释放自动化,隐藏在资源类的内部,对于资源操作的逻辑不可见。最终,达到逻辑表达简单直接。

 

分类
收藏
回复
举报
回复
    相关推荐