分析一套源代碼的代碼規範和風格並討論如何改進優化代碼

個人工程實踐是脫機手寫漢字識別相關的,準備藉助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)命名風格,首字母大寫,私有類可用一個下劃線開頭

 

函數名:函數名一概小寫,若有多個單詞,用下劃線隔開

變量名:變量名儘可能小寫, 若有多個單詞,用下劃線隔開

常量名:常量使用如下劃線分隔的大寫命名

相關文章
相關標籤/搜索