说明:所谓克隆代码,是指代码中类似或者干脆一样的部分。克隆代码往往是通过粘贴操作有意地重写同样的处理而产生的。 EOX_[ek7
|NU0tct^
一般情况下,克隆代码是可维护性下降的一个重要原因。比如说,如果对同一处理进行了拷贝,那么当原来的代码发生问题,所有拷贝形成的部分都必须跟着进行修改。可是,如果不是原来那个人的话,其他人来做修改,难免遗漏应该修改的部分,从而造成代码的质量下降。 @pGlWw9*
uT} TSwgp
b3b~T]]
6rQpK&Jx
完全避免克隆代码确实比较困难,但是,作为程序员,完全应当时刻想着把类似处理抽取出来(参照下面的例子)。 v$m[#&O^V?
0BCGJFZ{
另外还应当充分利用后面补充说明中推荐的工具,对代码进行检查,看看有没有克隆代码,经常有意识地进行改善。 OJsd[l3xR
m6r )Z5}f
例 有克隆代码存在 Void someMethod ( int arg1, int arg2) { ),]2`w&k
… H@MFj>~
if (arg2 != 0) { //类似处理的候补 [-t> G!)
p = arg1 / arg2; '95E;RV&
}else { )6>|bmpU
p = 0; a*':W%7
} K@P`_yxN
… EotwUT|
if (arg2 != 0) { //类似处理的候补 +qUkMx
q = arg1 / arg2; J`q}Ry;
}else { Yv>BOK
q = 0; 2]} Uov
} +&7Kk9^
… q[7d7i/r6
} `8(h,aj;
例 对存在克隆代码的程序进行改善 Int checkSetVal ( int val1, int val2) { //OK: 抽出来的克隆部分 o? i.v0@!K
v]T(zL|
补充说明: 用来检查克隆代码的工具 5Y Q
1_NG+H]x9
用来检查克隆代码的工具主要有CPD,CCFider等。