轉(zhuǎn)至:
http://blog.jobbole.com/83595/
代碼審查清單
常規(guī)項
代碼能夠工作么滋恬?它有沒有實現(xiàn)預(yù)期的功能麦到,邏輯是否正確等绪钥。
所有的代碼是否簡單易懂哩掺?
代碼符合你所遵循的編程規(guī)范么检眯?這通常包括大括號的位置厘擂,變量名和函數(shù)名,行的長度锰瘸,縮進刽严,格式和注釋。
是否存在多余的或是重復(fù)的代碼?
代碼是否盡可能的模塊化了舞萄?
是否有可以被替換的全局變量眨补?
是否有被注釋掉的代碼?
循環(huán)是否設(shè)置了長度和正確的終止條件倒脓?
是否有可以被庫函數(shù)替代的代碼撑螺?
是否有可以刪除的日志或調(diào)試代碼?
安全
所有的數(shù)據(jù)輸入是否都進行了檢查(檢測正確的類型崎弃,長度甘晤,格式和范圍)并且進行了編碼?
在哪里使用了第三方工具饲做,返回的錯誤是否被捕獲线婚?
輸出的值是否進行了檢查并且編碼?
無效的參數(shù)值是否能夠處理盆均?
文檔
是否有注釋塞弊,并且描述了代碼的意圖?
所有的函數(shù)都有注釋嗎泪姨?
對非常規(guī)行為和邊界情況處理是否有描述游沿?
第三方庫的使用和函數(shù)是否有文檔?
數(shù)據(jù)結(jié)構(gòu)和計量單位是否進行了解釋肮砾?
是否有未完成的代碼奏候?如果是的話,是不是應(yīng)該移除唇敞,或者用合適的標(biāo)記進行標(biāo)記比如‘TODO’蔗草?
測試
代碼是否可以測試?比如疆柔,不要添加太多的或是隱藏的依賴關(guān)系咒精,不能夠初始化對象,測試框架可以使用方法等旷档。
是否存在測試模叙,它們是否可以被理解?比如鞋屈,至少達(dá)到你滿意的代碼覆蓋(code coverage)范咨。
單元測試是否真正的測試了代碼是否可以完成預(yù)期的功能?
是否檢查了數(shù)組的“越界“錯誤厂庇?
是否有可以被已經(jīng)存在的API所替代的測試代碼渠啊?