您的位置:首页 > 编程语言

2016-5-30 代码Review问题总结

2016-05-31 10:59 363 查看
重要程度划分 S A B C 

1.金钱使用无符号数,导致有可能在减钱的时候而加了钱,无符号没有负数(S)

(虽然AddBindTickets函数传的金币数是int类型,导致DWORD(unsigned int)明哥的原话:我怀疑有没有测试过,刷金币和物品是最严重的错误,可以直接被公司辞退,把一个负数赋值给DWORD类型的变量,数值可能变得好大)WORD明哥的原话:我怀疑有没有测试过,刷金币和物品是最严重的错误,可以直接被公司辞退,把一个负数赋值给DWORD类型的变量,数值可能变得好大)

2.一些函数有已经封装好的可以直接调用。如HFSetHtmlPage (A)

3.NerveHandle本来是经脉的,不是活动,却放在了Huodong文件夹里 (C)

4.客户端能计算的一些函数不要去请求服务器。如服务器的GetStuffAndMoneyCostBindTicketsAndTickets

在不计算金钱返还和和折扣的情况下用客户端的GetAutoBuyCostInfo来代替 (A)

5.读取配置文件时的字符数组,在每次读取数据前都要memset(szBuffer, 0, sizeof(szBuffer)).否则可能保留之前

的数据尤其是之前的数据比当前的数据长的情况下 (S)

6.缩进要对齐 (C)

7.gGlobalClient->getNetConnection() 要先判断NULL,同理gZoneServiceProvider->GetChatServer() 也要判断NULL,

所以最好的办法是只要是指针,全部判断是否为NULL再调用,这样就不用太详细的考虑这个问题。 (B)

8.C++里两者取较大的那一个数可以调用 max 不用使用三元运算符。 (C)

9.客户端请求数据库可以用C++的消息,也可以直接用Lua函数TaskItemClick。更灵活,且便于修改。 (B)

(明哥的原话:应用逻辑代码最好都提取到lua中实现,把底层的存储、高要求的计算和lua中实现不方便的逻辑就可以放C++中实现



10.如果已经判断了长度直接使用强制转换就行了,不用使用缓存对象。而且要先判断.good() 再使用。而不是先使用再判断。 (B)

iBuffer ibuf(pszMsg, nLen);

SMsg msg;

iBuffer >> msg;

if (!iBuffer.good())

11.没有实际操作的不要使用Info_ChatWindow 选项。这个我知道的呀。 (C)

12.DWORD 类型前缀才用dw, int类型要用n。 (A)这个是拷贝没有修改的锅。

13.sprintf_s换成sprintf 使用公司封装的更安全的字符串整合函数。 (C)

14.重要的判断放在前面,不满足就返回了,不要处理了一堆逻辑之后,最后又因为条件不满足而返回。 (B)

15.不是很重要的if条件语句,直接判断 ~= NULL来执行,而不用再 == NULL return了。这个就是个编码风格问题 (C)

16.函数的返回值作为判断条件, 比如 返回-1,就用-1 来判断,而不要用 < 0.来判断。

17.函数返回类型要一致,即使是Lua函数,不可以 有的分支 return true, 0 有的分支 return false, "" (B)

18.复制 不应该全部拷贝过来 应该一行一行的拷贝过来,检查完毕,才可以。 (S)

19.能够提取出来作为变量的,不要反复调用函数获取。 比如客户端的GetHero() (C) 

综上所述:

1.欲速则不达,越想快,如果犯了错误 回头返工 其实反而更慢。

2.Review代码应该一行一行的看仔细了,尤其是在对金币,元宝等进行操作时,更是要想清楚每一步,每个函数传递的参数的实际意义。可以把具体的正负值写在那里。 

3.复制代码可以,可要保证每一行代码都有意义。且没有错误。

4.主要是精神问题,前两周都没休息好,精神太差了,用那么差的精神去写代码怎么可能会不是漏洞百出?所以最最重要的

是好好休息,养好精神和体力,为每一天高校,精准的工作做好准备。

预防数值转换的错误:

1.对一个DWORD类型的变量赋一个负数值时编译器都会报警,所以要看新编译的警告信息里有没有刚才修改的文件。

2.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: