代碼走查規範表

代碼走查要點規範表


評審對象

 

作者

 

評審人

 

評審工作量

 

序號

檢查項

評審意見

走查前準備

 

1

得到一份解釋代碼的最新的設計文檔      

 

2

代碼都已提交 ,版本統一  

 

程序結構組織

 

1

所有代碼的結構清晰,具有良好的結構外觀和整齊

 

2

所有的模塊(函數和外部接口)定義清晰,模塊分解清楚 

 

3

所有的功能需求都明顯的覆蓋 

 

4

結構設計能夠滿足機能變更   

是“機能變更”還是“功能變更”

5

整個代碼體系結構組合合理 

 

6

所有主要的數據構造描述清楚,合理 

 

7

模塊中所有的數據結構都定義爲局部的,並且通過定義好的函數進行訪問 

 

8

所有的接口模塊化,因此修改時不影響其他代碼模塊      

 

9

代碼體系構架對空間和速度都已經進行考慮    

 

10

提供了處理數據的策略    

 

11

數據庫操作、IO操作等是否正確關閉資源。並且必須在try -catch-finally 的finally中關閉。

 

12

一個業務如果進行多次數據庫更新、添加、刪除是否正確添加事務。

 

13

進行邏輯與、邏輯或判斷時是否使用短路與、短路或。

 

14

多處使用相同代碼時,應定義唯一方法或變量以供使用。

 

15

對象是否使用工廠獲取。

 

16

導入類時,如果僅使用包中的幾個類,應導入具體類,而不是導入整個包。

 

17

數組聲明的時候使用 int[] index ,而不要使用 int index[]。

 

18

檢查代碼和詳細設計是否一致。

 

19

檢查類中是否有無效的代碼或者是無用的代碼。

 

20

不要使用System.out.print()輸出,需要進行日誌處理

也不能使用System.err

21

類的生成是否都有工廠模式而不是直接調用。

 

22

所有的文件名符合文件命名規範,見名知意 

 

23

文件和模塊分組清晰       

 

24

所有的代碼行在80字符以內 

 

25

每個程序文件都小於2000行 

 

代碼組織 

 

1

數據庫查詢語句不要出現select *

 

2

對需要處理的字符串定義爲StringBuffer ,常量定義成靜態的。

 

3

所有的變量名都小於32字符    

 

4

每行代碼都小於80字符 

 

5

類名、方法名、變量名的命名是否規範。

 

6

有返回值的方法是否正確返回。Return語句應定義在方法結尾處。

 

7

代碼排版是否規範。

 

8

所有的行每行最多隻有一句代碼或一個表達式    

 

9

複雜的表達式具備可讀性 

 

10

續行縮進 

 

11

括號在合適的位置    

 

12

每個順序的小塊用空行隔開 

 

13

註釋和代碼對齊或接續在代碼之後 

 

14

JSP必須不能有basepath。

 

15

JSP引用js全部要有path

 

16

JSP用的標籤庫是否都正確引用。

 

17

JSP寫的js方法必須要有註釋。

代碼是否可讀。

 

18

代碼的邏輯是否有問題。

 

19

JSP頁面儘量不要寫過多的隱藏域。

 

20

JSP頁面要注意排版、必要的註釋、儘量減少使用alert(),JS

和CSS除非必要就放到外部的單獨文件中,在JSP中引用。

 

21

類常量是否使用public static final修飾。

 

22

實例變量是否使用private修飾並定義getter、setter方法。

 

23

連接數據庫的方法必須調用公用的方法。

 

24

異常要統一處理,異常處理方法是否符合項目組的約定

 

25

在Action中不要過多的邏輯處理代碼

 

26

不要出現魔鬼數字

 

27

檢查可能出現空指針異常的地方,例如一個對象可能爲空,卻調用它的方法或屬性。

 

28

 顯示的文本無拼寫和語法錯誤 

 

29

代碼與操作符的優先級無關

 

30

所有的表達式使用了正確的操作符 

 

函數組織

 

1

所有的函數名都小於64個字符 

 

2

代碼中有相關注解      

 

3

函數的名字清晰的定義了它的目標以及函數所做的事情 

 

4

函數中所有的部分都合理的組成函數,相關獨立的語句組組成函數 

 

5

函數高內聚 只做一件事情,並做好   

 

6

函數和其他代碼鬆耦合

 

7

參數遵循一個明顯的順序; 

 

8

所有的參數都被使用 

 

9

函數的參數接口關係清晰    

 

10

如果一個函數有返回值,在所有的出口都有返回值         

 

11

函數使用了最少數目的return語句 

 

12

函數的參數個數小於7個 

 

13

使用的算法說明清楚 

 

14

函數檢查了輸入數據的合法性    

 

15

函數異常處理清楚 

 

16

函數設計已經考慮了將來的變化   

 

17

調試信息存在於代碼中並容易激活   

 

18

代碼檢查調用函數的返回值,參數和調用匹配        

 

19

函數確保了沒有影響函數外代碼        

 

20

遞歸定義了出口         

 

21

遞歸侷限於一個函數         

 

22

對接口的調用必須要有判斷傳入的參數不能爲空和傳入的參數正確。

 

數據類型與變量 

 

1

數據類型存在數據類型解釋           

 

2

代碼避免了重新定義預先定義的數據類型         

 

3

 靜態變量明確區分 

 

4

每一個變量都初始化了    

 

5

命名和現實生活中的事務接近而不僅僅是一個程序類型         

 

6

所有的變量都有最小的活動範圍 

 

7

所有的全局變量都描述清楚       

 

8

所有的變量都用到了    

 

條件判斷 

 

1

條件檢查和結果在代碼中清晰         

 

2

If/else 使用正確    

 

3

判斷的次數降到最小   

 

4

boolen表達式表示清楚    

 

5

最常用的情況最先判斷 ,所有的情況都考慮    

 

6

  判斷體足夠短,以使得一次可以看清楚 ,不要有臃腫的邏輯判斷。

 

7

嵌套層次小於3次 

 

8

判斷條件使用引用時,應先判斷其是否爲null。

 

循環   

 

1

17.不要出現三層以上的for循環。如有必要必須寫清楚註釋

 

2

循環體不爲空,循環體能夠一次看清楚    

 

3

循環之前做好初始化代碼    

 

4

當有明確的多次循環操作,使用For循環       

 

5

當有不明確的多次循環操作,while循環被使用

 

6

代碼中不存在無窮次循環    

 

7

循環的頭部進行循環控制    

 

8

循環體內的循環變量起到指示作用。

 

9

所有的循環邊界是否正確;

 

10

循環終止的條件清晰    

 

11

循環條件、判斷條件的邊界值,數組、集合下標是否越界。

 

註釋  

 

1

類、方法、判斷條件、循環、主要變量是否添加註釋。

 

2

類名、方法名、變量名的命名是否規範。

 

3

有返回值的方法是否正確返回。Return語句應定義在方法結尾處。

 

4

源代碼能夠自我解釋 ,每個人看到代碼就能很快理解                 

 

5

解釋不過於簡單,解釋說明代碼功能,準確描述代碼意義

 

6

註解清楚正確 ,註解爲用戶服務    

 

7

所有的假設和限制進行註解

 

8

長的控制體結束,進行註解    

 

9

類、方法、變量等註釋是否符合規範,註釋是否能夠清晰明瞭

 

10

對if和for、while等要進行必要的註釋,並且方法體都要用{  }包起來

 

11

代碼的註釋不能過於簡單。要清晰明瞭,提交的時候必須寫清楚修改的功能點和爲什麼要修改。

 

總括 

 

1

代碼直觀         

 

2

無用的代碼、註解已經刪除    

 

3

除非必要,不要再循環體內定義對象。

 

4

代碼是否與詳細設計一致。

 

其他注意項

 

1

儘量減少同名的類(如java.sql.Date,java.util.Date)

 

2

不要在循環中反覆定義創建變量

for(){String str= (new String)v.next();}

 

3

不要在循環中使用複雜的計算

for(int i=0;i<en.size()i++){}

 

4

可能重複執行的SQl語句儘量使用preparedStatment

 

5

浮點型要精確比較時不要使用==,而如下進行

Math.abs(x-0.0)<Double.MIN.value*2

 

6

在sql中注意敏感的單詞要回避使用

DB2 中id flag year month name state

Oracle 中number

Sybase中 count

 

7

代碼與操作系統無關,不需要任何假設條件

 

特殊 

 

1

所有的數組訪問在它們的邊界內                        

 

2

所有常量定義和使用替代代碼中的數字    

表述模糊

3

類型轉換明確指明

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章