代码评审三步走-1
上一篇 /
下一篇 2012-07-24 10:05:44
/ 个人分类:杂谈
51Testing软件测试网(@ rb.uF7n 序言
7n ~SV"X&Ue051Testing软件测试网(CYr)rD!?!q.` 在工作中
参加过不同产品的多次代码检视活动,但在过程中观察到的一些现象引起了我的注意:不管是被检视者还是检视者,似乎都没有什么思路,只是对着代码发呆。即便
能够发现一些问题,多数也是影响甚微的小问题。少数专家虽然能够发现有价值的问题,但也是凭经验+直觉。要问他们怎么做才能发现这些问题,却又没有答案。51Testing软件测试网/Hk
EA.T9dF
51Testing软件测试网1s0GRxS
P 为什么会有这样的现象呢?这种情况有没有办法加以改善呢?
;C9[^0}:IOd/^051Testing软件测试网sU%I*MPV:na+r 我个人感觉,这是缺乏“套路”所致。研发活动,无论是架构设计,还是代码编写,或者测试活动,都有各自的方法或“套路”。这些“套路”能够指导相关人员有序地开展活动,并保证活动的有效性。那么代码检视是不是也应该有这样的“套路”可循呢?
1nqaH`0pO3},~7J]p0 经过一段时间的反复思考,我将自己的一些想法整理成此文,希望能够对代码检视活动提供一些帮助。51Testing软件测试网\ `C+\8Dpr.]
51Testing软件测试网O`9x4Z+dO 正文51Testing软件测试网F7NB^3OP2B~2@y
A5a4~ m h0 下面将结合示例代码进行代码检视三步走的实战演示。
U
t,}j6n7Z5Pl9I7a:R051Testing软件测试网K@iHC bool EnemyChecker::isValidMonster(51Testing软件测试网CQKCn6LR6d*{ NPCManagement::HordeIdType hrdId,51Testing软件测试网5}7_6cWXYa:X const NPCManagement::MonsterInfoSeq& mnsInfos, l+x*{)R&`T0NPCManagement::MonsterInfoSeq& vmnsInfos,51Testing软件测试网UP"W(FV3]8g%bb NPCManagement::FailedMonsterInfoSeq& ivmnsInfos)51Testing软件测试网4gP8Q9K,Y
Bm { u4T?gm/{qtj0bool bRet = true;51Testing软件测试网3kw){-Xr}3YJ ivmnsInfos.length(mnsInfos.length());51Testing软件测试网D1NL6m;F'lDjS vmnsInfos.length(mnsInfos.length()); )lG?7K\0unsigned int iip = 0; // index of invalid horde pd9yd"RM0unsigned int ivp = 0; // index of valid horde51Testing软件测试网1R,[G2fi!l
i //检查怪物是否属于部落群 7C3Z6Z}G:ehiJ:F0for (CORBA::ULong i = 0; i < mnsInfos.length(); ++i)51Testing软件测试网(|J#k-[(k { Dq7D ~-W mzQlb ?0const NPCManagement::MonsterStatusInfoSeq& mnsStatusSeq51Testing软件测试网3i/g9m X@M:S8O r = mnsInfos[i].monsterInfos;51Testing软件测试网RI
XF1IyI wv4M+@ for (CORBA::ULong i = 0; i < mnsInfos.length(); ++i) +vQ+Z0F#O5vH~C0{ q
wMK1FD$H'[0const NPCManagement::MonsterStatusInfoSeq& mnsStatusSeq51Testing软件测试网Xu0c)^ S1^:Z/l = mnsInfos[i].monsterInfos;51Testing软件测试网&rb3msu}.l IntSet monsterIds; 4^"jTu @u"fmj0for (CORBA::ULong j = 0; j < mnsStatusSeq.length(); ++j)51Testing软件测试网+ox
l9S)|ZV0X0s { %FJ;mAU$Fj)xR0monsterIds.insert((int)mnsStatusSeq[j].monsterId); &Y0w-s+Ft0F0} ;rX3f1|]9Rn0c0if (monsterIds.empty())51Testing软件测试网Q0vFM3d;hVt2Zk {
|