回复
「编程模型」C++ 封装资源
蓝月亮
发布于 2020-9-2 15:53
浏览
0收藏
引子
最近 2 个月在做一个嵌入式 C++ 项目,Soc 提供的 API 都是 C 接口的,剩下的业务功能开发就全靠自己动手实现了。一般这类项目,有直接用 C 开发的,也有用 C++ 封装一下来降低复杂度。
场景
这类 C 接口中,有很大一部分是资源管理和操作的,这里的资源一般指使用前需要申请,使用后需要释放的某种有限的东西。操作系统中带有 Open、Close类似接口的都属这类,如文件、网络等,当然也有自己封装的资源,以及第三方库的。
使用资源,最麻烦的就是手动管理,项目复杂时,这里就会成为 Bug 之源。操作资源的基础版本是过程式的,全手动管理,也是一般 C 语言的惯用做法。
以上代码只是示意下使用场景,实际项目中的情况会比这个复杂几倍,一个子系统的出错处理轻松达 FAIL7。
类似这样的代码,最大的缺点就是没有可扩展性,只能为特定的场景量身定制;还有就是烧脑,需要很仔细的分析和检查;当然,如果不想烧脑,那就需要花费大量时间来调试,最终也能调出来。
解决方案
C++ 类的构造函数和析构函数,刚好能对应资源的申请和释放。这样,可以通过控制类实例的作用域来让资源的申请和释放自动化,隐藏在资源类的内部,对于资源操作的逻辑不可见。最终,达到逻辑表达简单直接。
分类
标签
赞
收藏
回复
相关推荐