五 ICE调用检查
1 请检查ICE调用设置了如下参数:
props.setProperty("Ice.CacheMessageBuffers", "0"); //内存参数
//消息最大大小
//消息超时时长
//
2 请检查ICE调用方和服务提供方的参数单位是否一致。
3 请检查每个ICE服务提供方提供服务执行时间不会太长,否则请采用异步。
4 请检查每个ICE调用消息长度不会出现超过最大消息长度的情况,否则请采取分片方法。
5 请检查每个ICE接口实现方法,请确认不返回NULL对象。
六 其他检查
1 检查所有if,如果没有else,是否确实可以不做任何处理。例如是否会导致资源泄露。
2 检查参数都被正确赋初值。类成员变量应该在构造函数赋初值。
3 检查format中参数和类型是否匹配。
4 字符串处理中,检查保留字符串合理性(index_search_deliver 关键词中出现了保留关键词(出现逗号)。
5 字符串比较或者查找中,检查是否存在大小写问题。
6 检查变量所代表单位是否一致,重点是调用第三方类库返回值的单位。
7 检查是否存在在迭代内修改迭代器情况。
8 除零错检查。
9 检查初始化对象数组时只new了数组,没有为每个数组对象执行new。
10 创建新文件时,要考虑是否已存在同名文件,并做好妥当处理。
七 一些常见API使用容易出错的情况
JAVA
1 java split函数 java使用"|"和"+"号进行split时需要使用双反斜杠转义。
2 java split方法,即使被分割的字符串是"",返回的也是长度为1的数组,而不是为0。
3 在线用户监控线程Map的KeySet使用错误, Collection 上进行迭代。
4 java中JDBC相关类的起始编号,不是从0开始,而是从1开始。
5 避免直接修改集合(Set)包含的对象,而要采取先移除->修改->再添加。
6 Calendar中HOUR为12小时制,一般用HOUR_DAY为24小时
7 Calendar类中调用set函数时,如果月和天超过正常范围时,该类会自动今昔国内增加和删除。
8 Calendar 类中 Month第一个月取值为0
9 java 中static synchronized 和 synchronized 用于修饰方法时,不是同一把锁。
C/C++
1 C++中 :string方法find first of(“target”), 是查找任何一个字符串出现位置。
2 c++ 的 vector 类成员 频繁插入和删除元素
3 c++中localtime方法不是线程安全
4 fprintf 一个buffer到文件时需要用 %s , 否则buffer 里含有% 时会导致程序崩溃
5 sprintf(buf2, sizeof(buf2), buf1); 的用法在buf1中包含诸如%n之类的字符时会导致程序崩溃,sprintf(buf2, sizeof(buf2), "%s", buf1);
6 字符串分割函数strtok方法不是线程安全,应该采用strtok_r, 不过strtok_r只有unix/linux版本,不支持windows;
7 字符串结尾是否含有’/0’
C#
1 客户端同一个页面的多个实例发布事件时,事件参数使用了同一个对象的多个引用,导致后面的事件修改参数时影响了前面的事件。
2 c#客户端生成ICE上下文未注意线程安全性 。
3 后检查界面代码时发现界面多线程以不安全的方式访问了一个静态成员变量,从而造成了这个问题。
八: 规范检查
1 时间格式规范: 统一为 yyyyMMddHHmmss,如果精度要求不高,则按上述规范截断。
2 带单位变量命名规范:变量名末尾必须标名单位、配置项名也必须末尾标准采用单位。
3 程序目录规范: 程序的输入、输出、错误文件等相关目录由系统脚本负责创建,程序遇到已配置的相关目录不存在,则不启动,退出,等待系统重起。(注:错误文件目录可以为空)
4 类说明编写规范: 包含: (1) 类职责 (2) 一些重要处理策略和异常处理说明
5 函数说明编写规范,public函数必须要写。
函数注释主要说明(有需要才写,没有就不写):
1)对输入参数的约定
2)返回值的意义
3)可能遇到的异常以及处理策略
4)抛出的异常说明
5)需要说明的比较重要的策略
九:建议审查列表
1 尽量减少每个类public方法个数。
2 减量减少重复代码。
3 审查每个类承担的职责,不要一个类承当功能太多。
4 审查每个函数长度,长度不要超过一屏,工具可检查。
5 java中根据内聚原则,将代码切分为多个package。每个package接口类尽量少,最好只有一个。
6 审查类之间关系,将类合理分层,尽量减少同层类之间的横向联系。
7 审查线程之间关系,尽量简化线程之间依赖关系。例如从网状关系,简化为星型关系。
8 审查日志,是否会出现反复写同一条错误日志,尽量少写日志。