背景
慢慢的自己管理项目已经一年了,这也是我管理的第一个项目,期间触及了挺多的知识盲区,开始慢慢的摸索,慢慢的熟悉,将压力转化为了动力。我在这里想总结下作为新人的我在这一年里收获了什么。
开始优化
可能源于自己管理项目,我开始放飞自我,但凡自己感觉看不顺眼的地方就改改改(还好没改出什么大问题出来)。开始每优化一个代码我都会反复去测,生怕出问题。通过不同的写法来简化代码,期间用的最多的应该是宏吧!这套代码最基础的框架年代稍微也有些久远,写的人越来越多,花里胡哨的,抄代码的啥都有,经常给人一直繁琐冗乱的感觉,特别是抄代码的时候,会出现大量类似代码,为了方便其他项目人员编写,提高效率,我做了挺多封装,特别是使用宏跟lambda,不过也是源于C++11后,之前很多没法优化的东西现在都可以搞了。这些都是题外话,进入主题吧!
为何需要自动转换?
为何要自己搞自动转换?用Protobuf不香吗?这东西确实好,毕竟Google出品,必属精品。但我没选,毕竟还是想兼容下当前项目(后期做Protobuf扩展),目前项目使用socket通信,与前端通信时使用网络字节序跟本地字节序转换,现状是需要对每个字段单独本地字节序解析的方式接收!!!然而接收时任然是要对包体总大小做检测的。所以我想以最简单的方式实现,毕竟当前服务端socket协议传输数据量不大,几大基础类型就能胜任,于是有了现在这东西,目前这个虽然大体能支持我服务端的要求但是还是有不足,扩展性不好,但用起来简单。
希望有更好解决办法的小伙伴给我指点下。
/*
* Author : Guojie Zhang
* Email :2453667260@qq.com
* Description : 用于结构体字节序解析
* 能解析的最大参数受此处定义的宏所限制(暂时没有想到更好的解决办法)
*/
#ifndef _PROTOCOL_BODY_H
#define _PROTOCOL_BODY_H
#include "Common.h"
#define TOH(t) Protocol::NTOH(t)
#define TON(t) Protocol::HTON(t)
#pragma pack(push)
#pragma pack(1)