個人工程實踐是脫機手寫漢字識別相關的,準備藉助GoogLeNet做爲網絡重要模塊,在GitHub上找到了基於GoogLeNet的圖像分類算法開源項目。python
(一)在源代碼目錄結構、文件名/類名/函數名/變量名等命名、接口定義規範和單元測試組織形式等方面的作法和特色;算法
代碼的目錄結構以下:shell
1.文件名命名編程
dataset中主要存放訓練測試數據集,以及相關標籤數據;網絡
tools中:create_tf_record.py——圖片生成訓練數據編程語言
VGG、inception_v一、inception_v三、mobilenet_v、resnet_v1——訓練文件編輯器
README.md——項目概要,向讀者快速介紹這項工程函數
predict.py——根據圖片預測類別單元測試
2.類名/函數名/變量名命名測試
以最基本的讀取圖片的函數爲例,函數名(read_image),變量名(filename/height/width)都清晰明瞭,註釋也至關清晰。
3.接口定義規範
在Python中接口由抽象類和抽象方法去實現,接口是不能實例化的,只能被別的類繼承去實現相應的功能。
4.單元測試組織形式
對於test_image中的圖片,用predict.py對於網絡訓練結果進行預測,來測試模型的效果。
(二)哪些作法符合代碼規範和風格通常要求;
1.命名規範
命名可讀性強,且對於變量的註釋詳盡,對於其功能和用途的說明清晰到位。
2.縮進規範
代碼總體看起來清晰規整,排版縮進等很是整齊。
3.註釋規範
註釋內容詳細,不只準確描述了「作了什麼」,也說明了「爲何這麼作」。
(三)列舉哪些作法有悖於「代碼的簡潔、清晰、無歧義」的基本原則,及如何進一步優化改進;
部分代碼一行過長,每一行的代碼儘可能不要超出80個字的長度,超出的回車排版, 方法名的冒號對齊。
(四)總結同類編程語言或項目在代碼規範和風格的通常要求。
1.編碼
如無特殊狀況, 文件一概使用 UTF-8 編碼
如無特殊狀況, 文件頭部必須加入#--coding:utf-8--標識
2.格式
縮進:統一使用 4 個空格進行縮進
行寬:每行代碼儘可能不超過 80 個字符(在特殊狀況下能夠略微超過 80 ,但最長不得超過 120) ;
3.空行
模塊級函數和類定義之間空兩行; 類成員函數之間空一行;
4.空格
在二元運算符兩邊各空一格[=,-,+=,==,>,in,is not, and];
5.註釋
行註釋:行註釋是與代碼語句同行的註釋。行註釋和代碼至少要有兩個空格分隔。註釋由#和一個空格開始
塊註釋:「#」號後空一格,段落件用空行分開(一樣須要「#」號)
文檔註釋:做爲文檔的Docstring通常出如今模塊頭部、函數和類的頭部,這樣在python中能夠經過對象的__doc__對象獲取文檔.
編輯器和IDE也能夠根據Docstring給出自動提示.
6.命名
模塊:模塊儘可能使用小寫命名,首字母保持小寫,儘可能不要用下劃線(除非多個單詞,且數量很少的狀況)
類名:類名使用駝峯(CamelCase)命名風格,首字母大寫,私有類可用一個下劃線開頭
函數名:函數名一概小寫,若有多個單詞,用下劃線隔開
變量名:變量名儘可能小寫, 若有多個單詞,用下劃線隔開
常量名:常量使用如下劃線分隔的大寫命名