阅读paho.mqtt.c源码学习记录01
阅读paho.mqtt.c源码学习记录01
MQTT协议是当前非常流行的一个工业物联网协议,它具有很多优势,比如:轻量,且对流量占有小的优势;基于订阅/发布模式;有心跳/遗言机智;通过qos控制消息接收质量等。
目前,基于MQTT协议封装的c的库,如下:
https://github.com/eclipse/paho.mqtt.c
通过源码阅读,进行学习
1.版本管理
在阅读MQTT源码库的时候,个人觉得,非常值得我自己写库的时候学习的经验,最简单的一点就是版本管理。
头文件里定义当前库的版本号;
提供接口获取当前链接的库的版本号;
通过版本比较,以此判断客户端程序使用库的时候,没有混淆不同的版本。
PS:
这个设计真的很好,毕竟库的版本一直在迭代更新,如果没有一个版本管理,当编译时遇上了多个版本的同一个库,程序一旦链接了错误的版本,可能编译时可以成功编译,但是在运行时会出现各种奇奇怪怪得报错,而这种报错,往往非常难以排查。
2.注释合理
MQTT源码库里的注释很详细,但是又不是那种对每一个函数、每一个参数、每一个返回值都进行长篇大论的累赘解释。MQTT源码库里的注释说明,其实是对重要接口的使用情景,注意事项(尤其是关于内存释放的提醒),以及接口设计的说明。
感觉这种注释风格,非常值得学习。
毕竟很多注意事项,只有写代码的时候记得,等过上几个月再看,基本都忘的差不多了……对于后续维护来说,风格良好的注释真的重要。
3.接口的更新迭代都兼容了旧版本
MQTT源码库也更新了这么久了,必然有接口的变更,新的接口取代旧的接口,不过从这份源码来看,对于新旧版本的兼容,处理的很值得学习。客户端程序几乎不用改动,就可以从使用旧的库,替换成新的库。这种设计对于库的使用者来说,是非常友好的。
总结
以上是对于源码阅读最粗略的学习,更加具体的学习记录,将会在后续继续更新记录。