Code Review代码审查的思路-2

上一篇 / 下一篇  2012-07-16 13:13:05 / 个人分类:杂谈

fkgg0D0  1.4 Code Review的步骤

"o'S!^;} mPVy.p"o!x0

4G&qGH[1p0  这些是我在平时工作中的经验总结,目前也是按照这个步骤在做。

G*p9W3P/N fd\0

L;K5bsJ0  (1)代码编写者和代码审核者坐在一起,由代码编写者按照UC依次讲解自己负责的代码和相关逻辑,从Web层->DAO层;51Testing软件测试网 j-G(g` Di!kr an$n

6Be(uQd+v["f0  (2)代码审核者在此过程中可以随时提出自己的疑问,同时积极发现隐藏的bug;对这些bug记录在案。51Testing软件测试网0u]h`,Y'Z0z&t#w

51Testing软件测试网;Xo DEN

  (3)代码讲解完毕后,代码审核者给自己安排几个小时再对代码审核一遍。51Testing软件测试网;?;T w~F&Y \#B

} Apr)SXl0  代码需要一行一行静下心看。同时代码又要全面的看,以确保代码整体上设计优良。51Testing软件测试网ug7^j \Cslq2v m

8z]x-y{7^x0  (4)代码审核者根据审核的结果编写“代码审核报告”,“审核报告”中记录发现的问题及修改建议,然后把“审核报告”发送给相关人员。51Testing软件测试网~f^3O$q2F o3M'q

B-I pD5}0  (5)代码编写者根据“代码审核报告”给出的修改意见,修改好代码,有不清楚的地方可积极向代码审核者提出。

~)@`+l;h|'wn051Testing软件测试网i9S!]#A4ez&o3F

  (6)代码编写者 bug fix完毕之后给出反馈。

6YvX e#sLC)~051Testing软件测试网1z"{`,h2n$x!|

  (7)代码审核者把Code Review中发现的有价值的问题更新到“代码审核规范”的文档中,对于特别值得提醒的问题可群发email给所有技术人员。51Testing软件测试网L.e`5T3JI'^

51Testing软件测试网5Y}"p?^$O5q{p9t+K i,F

  提示51Testing软件测试网4[ Q W6p,x#I_

51Testing软件测试网n!c Y8P5B(\J

  Code Review必备的文档:

^YZ^6C0]*x)W051Testing软件测试网A&joK.@5g EG2XN

  “代码审核规范”文档:记录代码应该遵循的标准。

-m(o2F*n cV0

3h8lx%l\Gm9rL0  代码审核者根据这些标准来Code Review代码,同时在Code Review过程中不断完善该文档。

I Y)N6cY1|`0

GR(Z+~8R5[9m[ O2Ue0  2、Code Reivew的执行51Testing软件测试网$e'@)r%Kxs

51Testing软件测试网 Bxg9]3B7Bsu@b.u

  一个标准的Code Reivew活动应该分为三个阶段:

a N s{l4@x3?051Testing软件测试网*sy2D0L:w&R(q2x,ue

  2.1 事前准备阶段

yADX,I?6a(uFI [%F051Testing软件测试网t6i7US#qE\

  在一次CR前,对以下内容进行充分准备。

p?D*w0n{O051Testing软件测试网^-Cc|S^5\$C

  2.1.1 CR的对象51Testing软件测试网FT9BXGI[

51Testing软件测试网?/nH'yFa

  在准备CR代码对象时,我们要注意代码的数量,如果代码量比较大,要对代码进行必要的分解,确定其中的关键代码,对关键代码进行CR,可以达到举一反三的目的。51Testing软件测试网K:T:O@o b6o3U.rWJ

51Testing软件测试网7Ql*VNy%c;u7ue

  2.1.2 CR的内容

PJ@a HY X8by1^ l051Testing软件测试网4?IW] X^8T

  我们对代码的审查内容很多,如代码的编写是否规范(注释的书写格式、命名规范等)、技术处理规范(异常处理、日志处理、代码组织结构等)、业务实现等。我们不能希望通过一次CR活动,完成所有这些内容的审查,因此我们必须设定本次CR活动内容界限,确定审查重点;

6}C.R3I4wU YF:_0

Z4o&A5{'\y0  2.1.3 评审规范和标准

2m#F'j#Rj0o!Q051Testing软件测试网dLI7u0g y%Jc

  在CR前设计确定评审规范和标准是必要,通过规范和标准我们在审查过程中可以有据可依,有理可循,而且还可以做到标准统一。51Testing软件测试网,T9d[n El{

A*ZS{h]0  2.1.4 选择CR活动的参与者

maOC6q `W k0

V1ecf#w!]c0  在CR开始前,必须把本次CR活动的对象、审查内容以及审查的规范和标准通报给所有的参与者。51Testing软件测试网B&n r^)A ~

uk4l.hW3v4eV4C0  2.1.5 选择CR活动的实施方式。

@Jft3n IDn tZ051Testing软件测试网I,JU&D3@.JqFM]X

  CR活动有很多形式可供我们选择,我们可以根据实际情况选择桌面式CR、演示讲解式CR、一对一的座位CR等等。

Gt7hNEOAy3]0

Vg]+P*|tS)E4Q0  2.2 实施阶段51Testing软件测试网O0C ^+tx%@ B{)T

I.?\|r0  充分的事前准备,只是做好CR活动的前提,在CR实施过程中,我们要做好以下工作。

3Sh? j\C*_1`2Z051Testing软件测试网3k#A1Bkg!M9l*M3J

  2.2.1 准确记录

NA7hYIV6Y051Testing软件测试网3b_Sv2x@+m

  对于CR过程发现的问题,我们必须清晰准确的记录,可以使用问题点记录单,明确记录的项目和内容。

'X| LBVh/NbkG0

We(y Ricg0  2.2.2 讲解与提问51Testing软件测试网2nomG;tA`

51Testing软件测试网Y#qo`8BO

  CR过程中,要采用代码作者讲解和审查者提问方式。审查者不能只在发现问题时提问,同时也要根据本次审查的内容要求代码作者对某个特定问题的讲解。

7KpB oS*M^051Testing软件测试网kP,Ji e&OWf QvN4T

  2.2.3 逐项审查

/~ E]"GI.@x0

V/bm&\B)s:X.y0  对事前确定的审查内容,要逐项审查,不能因为时间不足等因素一扫而过。51Testing软件测试网.w$} p Ub1n3I

2dV B!suo C?/n0  2.2.4 注意气氛

K|)c9qQ{B051Testing软件测试网{&hs V.t

  实施审查时,要营造一个讨论问题、解决问题的氛围,不能把审查会搞成批判会,这样会影响相关人员的积极性。51Testing软件测试网*h+M"AL k7|DJj\9o^

51Testing软件测试网Dvl Z(pj$P6g/E u

  2.3 事后跟踪跟踪。

-h/H5]e7O5_m4X~051Testing软件测试网,i6P,v%Ek%V N8aV

  2.3.1 确认发现的问题

N,rI gx,GM051Testing软件测试网*t@@a@r

  CR结束后,对发现的问题,首先需要确定以下内容。

@\5C:\H051Testing软件测试网+O7Tt]1?l/_

  1)问题点的难易程度以及影响的范围;

6i6p ~q j}0

K^6u|~O | o)B4^0  2)解决问题的责任者和问题点修正结果的确认者;51Testing软件测试网8uM4vFGb

orv8bCC` @\~N0  3)解决问题点的时限。

h2h2X k#K c0

U Kj'Us8D4a6h$j0  2.3.2 修正问题责任者51Testing软件测试网*G:HEc W$B f}9g

2a,V8He D7b0  对于修正问题责任者,在问题点的修正过程中,要三方面内容的记录。51Testing软件测试网)@g"oqZb P

51Testing软件测试网 ob!r1|2nva8P+]

  1)问题点的原因;51Testing软件测试网(Dx] Y-CCk&{H

Hfy"gM:z9f!a_0  2)解决问题点的对策;51Testing软件测试网eqTj }/ZrsII(GrU

51Testing软件测试网@Y%kc^F'S}3f@I

  3)修正的内容。

.d#qs6xfM"T051Testing软件测试网8p0k(p:Vf%A-E

  2.3.3 修正结果确认者

D%s.o|ux\7Y051Testing软件测试网C%~N*{he

  做为修正结果的确认者,必须按照事前约定的时限及时的对修正结果进行全面的确认

@q)z d:~^[051Testing软件测试网,` b-^5d/X.v

  3、注意事项51Testing软件测试网x_.WS8s N1?

51Testing软件测试网$qm!m yz

  3.1 经常进行Code Review

N[6r hdy051Testing软件测试网|;K` j$P2Y'B

  (1)要Review的代码越多,那么要重构,重写的代码就会越多。而越不被程序作者接受的建议也会越多,唾沫口水战也会越多。51Testing软件测试网5Z"t8h4w)[a4{.K.RG

51Testing软件测试网 A|l6Zx+TR%T

  (2)程序员代码写得时候越长,程序员就会在代码中加入越来越多的个人的东西。

p4Z7H6M7hIN051Testing软件测试网o&o'\M5t-eU

  (3)越接近软件发布的最终期限,代码也就不能改得太多。

?Ut C}'Zg051Testing软件测试网:w8l@-^9W ]

  3.2 Code Review不要太正式,而且要短51Testing软件测试网`Le^ w?;NE;zs

I]{hKc0  忘了那个代码评审的Checklist吧,走到你的同事座位跟前,像请师父一样请他坐到你的电脑面前,然后,花5分钟给他讲讲你的代码,给他另 外一个5分钟让他给你的代码提提意见,这比什么都好。而如果你用了一个Checklist,让这个事情表现得很正式的话,下面两件事中必有一件事会发生:51Testing软件测试网;U.@x&K]

51Testing软件测试网_*i.Q;K-w8`.F

  (1)只有在Checklist上存在的东西才会被Review。51Testing软件测试网9W"n?*\4K)@

51Testing软件测试网r7j WBM*L6[9F

  (2)Code Reviews 变成了一种礼节性的东西,你的同事会装做很关心你的代码,但其实他心里想着尽快地离开你。51Testing软件测试网G^-b^#o

51Testing软件测试网V9k!N7q_}A`

  只有不正式的Code Review才会让你和评审者放轻松,人只有放松了,才会表现得很真实,很真诚。记住Review只不过是一种形式,而只有在相互信任中通过相互的讨论得 到了有意义和有建设性的建议和意见,那才是最实在的。不然,作者和评审者的关系就会变成小偷和警察的关系。51Testing软件测试网HJz6P |Ab$^

"Kxt m`exD0  3.3 尽可能的让不同的人Reivew你的代码

q2yP\g L W_i0

P.g.mUu2{0  如果可能的话,不要总是只找一个人来Review你的代码,不同的人有不同的思考方式,有不同的见解,所以,不同的人可以全面的从各个方面评论你的代码。51Testing软件测试网;jka7XAQ/K

51Testing软件测试网 F_1B:pLj7E k?9c

  但不要太多了,人多嘴杂反而适得其反,基本上来说,不要超过3个人,这是因为,这是一个可以围在一起讨论的最大人员尺寸。

3b\5nO$ywQ051Testing软件测试网Ka(Frj%gME

  下面是几个优点:51Testing软件测试网6Utf0V k*A:T}

T-T$X0R.b0  (1)从不同的方向评审代码总是好的。

+p ~%P%{ cp7yV0

q)v7Y3K#|.`7iXaJ0  (2)会有更多的人帮你在日后维护你的代码。51Testing软件测试网Ws5@DB9|

51Testing软件测试网\#Qhy[`hC[-^#o

  (3)这也是一个增加团队凝聚力的方法。

{T.A:VH#G051Testing软件测试网:wQ2V _ s-XtAtu

  3.4 保持积极的正面的态度51Testing软件测试网v/M V A.Z Q

51Testing软件测试网@Jf2x IML n

  程序员最大的问题就是“自负”,尤其当我们Reivew别人的代码的时候,我已经见过无数的场面,程序员在Code Review的时候,开始抨击别人的代码,质疑别人的能力。太可笑了,我分析了一下,这类的程序员其实并没有什么本事,因为他们指责对方的目的是想告诉大 家自己有多么的牛,靠这种手段来表现自己的程序员,其实是就是传说中所说的“半瓶水”。51Testing软件测试网j0B xR? ]

0Y [N5P:pj0  所以,无论是代码作者,还是评审者,都需要一种积极向上的正面的态度,作者需要能够虚心接受别人的建议,因为别人的建议是为了让你做得更好;评审者也需要以一种积极的正面的态度向作者提意见,因为那是和你在一个战壕里的战友。记住,你不是一段代码,你是一个人!51Testing软件测试网4lo%u'e7q#U%w

.v-p[/{.T0  3.5 学会享受Code Reivew

?`vlu%?051Testing软件测试网Q7N!\mc{q@

  这可能是最重要的一个提示了,如果你到了一个人人都喜欢Code Reivew的团阿,那么,你会进入到一个生机勃勃的地方,在那里,每个人都能写出质量非常好的代码,在那里,你不需要经理的管理,团队会自适应一切变 化,他们相互学习,相互帮助,不仅仅是写出好的代码,而且团队和其中的每个人都会自动进化,最关键的是,这个是一个团队。

:H PBGe3v*Q0

TAG:

高山流水 引用 删除 love¥¥   /   2012-07-17 17:23:54
5
 

评分:0

我来说两句

Open Toolbar