这几天调试一个摄像头,看到文档时一皱眉:这格式难免太原始了点。
怎么就原始了?
首先,直接定义数据结构为4096字节。不管数据多少,每次都发这么
多。功能当然也能完成,就是显得……不够专业。
然后呢,在文档中规定字串长度数字。有程序员会问了,这不是很常
见的做法吗?当然很常见。跟第一个问题一样,咱内容少了能不能省点?
如果长度不够,怎么办?
数据结构是顺序定义的。如果顺序变化了,这不整个乱套了吗?
以前专门研究过微软文档(没错,就是WORD文件)的存储格式,名叫
结构化存储方式。因此对数据结构有一点心得,这里就提出来,供需要的人
参考:
结构中的数据单元,有定长和变长两类。
定长单元,采用类型+值的方式。比如说bool、int。
变长单元,由类型+长度+内容的三元组成。这样数据多少都不影响使用
方的处理代码。
顺序问题怎么解决?尽量采用键+数据单元的方式。为什么呢?这样可以
避免顺序、缺少、增加等产生的问题。在新旧版本兼容上也容易处理。这里的
KEY也不一定用字串,也可以用一个int来表示。
这个数据结构有什么好处?这样做的好处就是,把数据结构与内容分开,
这边数据内容的变化,对方解析数据这部分代码完全不用改,只是决定是否要
处理。
需要补充的是,在告知对方数据结构的时候,一定使用int32/short16这样
的形式。在不同系统上,int长度是不一样的。
有朋友一看,这个好,马上改?这里特别提醒的是,每次设置新数据
结构,都先考虑兼容问题。新旧同时支持,旧的逐步淘汰。