代码容错性及设计的一些小技巧(持续更新)

来源:互联网 发布:网络歌曲人生路视频 编辑:程序博客网 时间:2024/05/16 11:35

do-while的使用

#ifndef _BEGIN_DO_WHILE_#define _BEGIN_DO_WHILE_  do{#define _END_DO_WHILE_   }while(false);#endif具体代码中的使用_BEGIN_DO_WHILE_xxxif 出错    break;xxx_END_DO_WHILE_xxx这样即使程序出错 也可以保证 _END_DO_WHILE_之后的代码得到执行

变量前缀的使用

class Test{private:    string strProductId;    int iProductNum;    int iCoinType;    int iCoinNum;    int iErrorCode;    int strBillno;};变量前缀用来标识变量类型,可以在后续编码过程中快速识别变量类型,不用再跳转去查看.

转换嵌套设计为线性设计

需求: 记录qq用户 微信用户 游客用户的流水记录 使用reids存储,并提供查询.

我的设计: 使用set结构

key value qq <账号,<时间戳,flowItem>> wx <账号,<时间戳,flowItem>> guest <账号,<时间戳,flowItem>>

师父的设计: 使用sorted set结构

key score value qq_账号 时间戳 flowItem wx_账号 时间戳 flowItem guest_账号 时间戳 flowItem

namespace以及Google protocol buffer的使用

namespace的使用可以有效的防止命名污染的问题,避免和原有的代码发生冲突.

在具体的项目中,可以使用Google protocol buffer.(或者公司的jce协议)
参考:

  • https://developers.google.com/protocol-buffers/docs/overview
  • https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

该协议最大的特点是兼容性特别强,使得后续的业务拓展非常便利.并且用户只需要定义数据结构即可,代码可以由解析器自动生成.


获取配置的懒惰型原则

  • 能一次初始化的配置,一次初始化完成,不要每次调用反复初始化,浪费资源.
  • 在读取配置类的信息的时候,比如中共享内存中获取相关数据,一次读取的结果可以缓存起来,第二次读取的时候,先从缓存中获取数据,如果缓存中没有数据,则再去共享内存中读取数据,然后继续缓存.

一些代码编写规范

  • 模块中的函数一定要对一些边界条件和参数的合法性进行判断,即使是自己调用自己的函数,这样可以有效降低后人调用该函数出错的概率.
  • 代码中尽量不要出现硬编码,多使用宏和const常量,必要时使用static进行作用域的限制.
  • 养成顺手写注释的习惯,利己利人.
  • 能独立出来的函数或代码模块一定要独立出来,降低代码的耦合性以及降低相同代码出现的可能性.
  • 开发环境能使用公共库尽量使用公共库,相同的头文件保证在整个项目中只有一份,防止多份拷贝造成头文件的不一致性.
  • 监控很重要,可以及时了解服务的状态
0 0