關(guān)于代碼走查和代碼審查

代碼走查和代碼審查是白盒測(cè)試方法中的2種。

代碼走查:

從參加人員來(lái)說(shuō),應(yīng)該是項(xiàng)目的整體參與者,如果項(xiàng)目太大,整體參加的成本很高,那么可以以模塊為組進(jìn)行走查。因?yàn)樗麄冎g負(fù)責(zé)的業(yè)務(wù)是緊密相關(guān)的,使用的技術(shù)是接近程度比較大的,因而開發(fā)的規(guī)范應(yīng)該是統(tǒng)一的。

從走查內(nèi)容來(lái)說(shuō),應(yīng)該是代碼的命名規(guī)范,以及組織結(jié)構(gòu)。每個(gè)項(xiàng)目都有自己的規(guī)范,但是如果項(xiàng)目?jī)?nèi)部使用不同的規(guī)范必然會(huì)增加發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的難度,同時(shí)增加后期的維護(hù)成本。

從走查時(shí)間來(lái)說(shuō),應(yīng)該在每個(gè)模塊開發(fā)完成之后進(jìn)行,便于開發(fā)人員之間交流問(wèn)題以及體會(huì),并且每個(gè)人的講解時(shí)間不要超過(guò)30分鐘,因?yàn)槟K的業(yè)務(wù)復(fù)雜度不會(huì)那么復(fù)雜,30分鐘都講不清的業(yè)務(wù)邏輯如何保證代碼是清晰的。

從走查的結(jié)果來(lái)說(shuō),經(jīng)過(guò)走查的代碼應(yīng)該是參加成員大部分能認(rèn)同的,并且參加者每個(gè)人都能讀懂的邏輯清晰的代碼,并且通過(guò)交流提高項(xiàng)目成員的凝聚力,提高其業(yè)務(wù)認(rèn)知度,最好能形成項(xiàng)目之間可以共同使用的產(chǎn)品。

序號(hào)檢查項(xiàng)

1代碼的注釋與代碼是否一致?注釋是否是多余的?

2是否存在超過(guò)3層嵌套的循環(huán)與/或判斷?

3變量的命名是否代表了其作用?

4所有的循環(huán)邊界是否正確?

5所有的判斷條件邊界是否正確?

6輸入?yún)?shù)的異常是否處理了?

7程序中所有的異常是否處理了?

8是否存在重復(fù)的代碼?

9是否存在超過(guò)20行的方法?

10是否存在超過(guò)7個(gè)方法的類?

11方法的參數(shù)是否超過(guò)3個(gè)?

12是否有多種原因?qū)е滦薷哪硞€(gè)類?

13當(dāng)發(fā)生某個(gè)功能變化時(shí),是否需要修改多個(gè)類?

14代碼中的常量是否合適?

15一個(gè)方法是否訪問(wèn)了其他類的多個(gè)屬性?

16某幾項(xiàng)數(shù)據(jù)是否總是同時(shí)出現(xiàn),而又不是一個(gè)類的屬性?

17switch語(yǔ)句是否可以用類來(lái)替代?

18是否有一類的職責(zé)很少?

19是否有一個(gè)類的某些屬性或者方法沒(méi)有被其他類所使用?

20在類的方法中是否存在如下的調(diào)用形式:a.b().c()?

21是否某個(gè)類的方法總是調(diào)用另外一個(gè)類的同名方法?

22是否某個(gè)類總是訪問(wèn)另外一個(gè)類的屬性與方法?

23是否兩個(gè)類完成了類似的工作,使用了不同的方法名,卻沒(méi)有擁有同一個(gè)父類?

24是否某個(gè)類僅有字段和簡(jiǎn)單的賦值方法與取值方法構(gòu)成?

25是否某個(gè)子類僅使用了父類的部分屬性或方法?

代碼審查:

代碼走查(code walkthrough)和代碼審查(code inspection)是兩種不同的代碼評(píng)審方法,

代碼審查是一種正式的評(píng)審活動(dòng),而代碼走查的討論過(guò)程是非正式的。

最近對(duì)項(xiàng)目組進(jìn)行代碼評(píng)審,發(fā)覺(jué)需要對(duì)代碼評(píng)審中找到的問(wèn)題進(jìn)行一下分類,大概可以分成以下幾類問(wèn)題:

1. Comment

注釋沒(méi)寫,或者格式不對(duì),或者毫無(wú)意義

2. Coding Standard

沒(méi)遵守代碼規(guī)范

3. Existing Wheel

重復(fù)現(xiàn)成的代碼,或者是開源項(xiàng)目,或者公司已有代碼

4. Better practice

Java或者開源項(xiàng)目,有更好的寫法

5. Performance bottle and Improvement

性能瓶頸和提高

6. Code Logic Error

代碼邏輯錯(cuò)誤

7. Business Logic Error

業(yè)務(wù)邏輯錯(cuò)誤

代碼審查列出問(wèn)題的類型,并有解決情況報(bào)告

一般情況代碼走查有專門的工具比如:emma,該工具使用與大型項(xiàng)目,為開源的,代碼走查完畢之后需要對(duì)結(jié)論給出一個(gè)代碼走查報(bào)告。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評(píng)論 25 709
  • 日總結(jié)8.30 修身: 1.聽書,有些漫無(wú)目的,九月待規(guī)整 2.閱讀,讀書筆記得留著,至少章節(jié)的收獲總結(jié)要有,一邊...
    隔世的風(fēng)閱讀 164評(píng)論 0 0
  • 今天在windows安裝完redis啟動(dòng)時(shí)遇到一個(gè)錯(cuò)誤: 大概意思是:沒(méi)有足夠的可用空間,可以增加系統(tǒng)的大小分頁(yè)文...
    郭之源閱讀 6,712評(píng)論 0 0
  • 以前聽說(shuō)過(guò)這樣一句話:“女人是一種神奇的生物,每個(gè)月流血7天還不死的生物”。的確,女人確實(shí)是一種神奇的生物,可柔可...
    HX初三閱讀 30,373評(píng)論 0 1
  • 高中時(shí)期會(huì)堅(jiān)定不移的相信生活不止眼前的茍且,還有詩(shī)和遠(yuǎn)方的田野。于是乎報(bào)志愿時(shí)為了逃離父母的手掌,追求所謂的遠(yuǎn)方,...
    布丁怪獸o閱讀 356評(píng)論 0 0

友情鏈接更多精彩內(nèi)容