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

  個人工程實踐選題是搜索引擎相關,因此我從github上下載了一個python構建搜索引擎的項目,試圖今後項目展開分析代碼規範和原則。python

1. 目錄結構及文件命名git

 

2.函數名和變量名等命名github

  在python編程規範裏,除類名使用駝峯法之外,其餘模塊、函數、方法、變量均使用全小寫+下劃線。項目中類的命名沒有符合此項規範,函數和變量命名符合規範編程

   class Doc編程語言

class IndexModule
class RecommendationModule
def is_number(self, s)
def clean_list(self, seg_list)
def write_postings_to_db(self, db_path)
def construct_postings_lists(self)
def write_k_nearest_matrix_to_db(self)
def construct_dt_matrix(self, files, topK = 200)
def construct_k_nearest_matrix(self, dt_matrix, k)
def gen_idf_file(self)
def find_k_nearest(self, k, topK)
def get_news_pool(root, start, end)
def crawl_news(news_pool, min_body_len, doc_dir_path, doc_encoding)

3. 接口定義規範和單元測試組織形式函數

       在此項目中,使用unittest模塊進行單元測試,TestCase 也就是測試用例,TestSuite 多個測試用例集合在一塊兒,就是TestSuite,TestLoader是用來加載TestCase到TestSuite中的,TestRunner是來執行測試用例的,測試的結果會保存到TestResult實例中,包括運行了多少測試用例,成功了少,失敗了多少等信息。post

4.  列舉哪些作法有悖於「代碼的簡潔、清晰、無歧義」的基本原則,及如何進一步優化改進;單元測試

  項目中幾乎沒有註釋文檔,對後面讀代碼的人很不友好。開發者應該在編寫代碼的過程當中加入必要清晰的註釋,既幫助本身整理思路,也能方便後續的代碼維護。部分模塊沒有使用面向對象的思想,個別變量命名只有一個單詞,表意不夠直觀。接口不徹底統一,沒法直接生成接口幫助文檔。此外,做者對代碼的空格縮進和換行把握很差,沒有符合python編程規範。測試

5.  總結同類編程語言或項目在代碼規範和風格的通常要求。優化

a.只使用空格縮進 b.使用UTF-8編碼 c.每行只寫一條語句 d.使用行末反斜槓摺疊長行,限制每行最大79字符 e.導入包:每行惟1、從大到小、絕對路徑 f.類內方法空1行分隔,類外空2行分隔 g.運算符除 * 外,兩邊空1格分隔,函數參數=周圍不用空格 h.除類名使用駝峯法之外,其餘模塊、函數、方法、變量均使用全小寫+下劃線 i.1個前導下劃線表示半公開,2個前導下劃線表示私有,與保留字區分使用單個後置下劃線 j.開發時使用中文註釋,發佈時再寫英文文檔

相關文章
相關標籤/搜索