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

  • 結合工程實踐選題相關的一套源代碼,根據其編程語言或項目特色,分析其在源代碼目錄結構、文件名/類名/函數名/變量名等命名、接口定義規範和單元測試組織形式等方面的作法和特色;

  我選擇的是Siddhi的源代碼,該項目使用的編程語言是Java.其目錄結構如圖1所示。目錄結構清晰明瞭,各個模塊負責什麼功能,僅從名稱就能夠大體猜出。該項目中,根據模塊劃分了若干個不一樣過的目錄。命名規則爲,項目名siddhi爲前綴,以‘-’隔開,加上各模塊實現的功能。好比,siddhi-core中,存放的是Siddhi的核心模塊,主要功能在這裏實現。siddhi-samples存放的就是官方提供的一些示例,能夠供開發者進行測試使用。程序員

圖1編程

  如圖2所示,是siddhi-core模塊中包名的格式。將各個相關的類放入一個包進行管理。從圖2能夠看出,siddhi-core中的主要模塊有,聚合模塊、查詢模塊、存儲模塊等等。負責管理全局的類就直接放在siddhi-core這個包下,好比SiddhiManager、SiddhiRuntimeImpl.從類名就能夠看出SiddhiRuntimeImpl類是SiddhiRuntime接口的實現。設計模式

圖2多線程

  圖3到圖5展現的是項目中類名的命名風格。類名使用 UpperCamelCase 風格,聽從駝峯形式。異常類命名使用 Exception 結尾;測試類命名以它要測試的類的名稱開始,以 TestCase結尾。這樣作的好處顯而易見,開發者僅從類名就能很清楚地知道該類是屬於測試仍是異常。架構

 圖3編程語言

圖4函數

圖5單元測試

  圖六、圖7是變量名和方法名的命名風格。方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,聽從駝峯形式。爲了達到代碼自解釋的目標,任何自定義編程元素在命名時,都使用盡可能完整的單詞組合來表達其意。測試

   圖6優化

圖7

  • 列舉哪些作法符合代碼規範和風格通常要求;
  1. 類名、方法名、變量名聽從駝峯形式,名稱自己含有意義,能夠達到自注釋的目的;
  2. 常量命名所有大寫,單詞間用下劃線隔開;
  3. 抽象類命名以Abstract開頭,異常類以Exception結尾,測試類以TestCase結尾。各個類的做用一目瞭然;
  4. 若是使用了設計模式,類名會以Factory、Listener等結尾,有利於讀者理解代碼含義。
  • 列舉哪些作法有悖於「代碼的簡潔、清晰、無歧義」的基本原則,及如何進一步優化改進;
  1. 將某些類命名爲Executor,與JDK中多線程的部分類名重合,容易讓開發者產生誤解。建議命名爲Operator.
  2. 註釋少,沒有Javadoc,有時要想知道方法的參數和返回值的含義,須要進入方法,看具體實現才能搞清楚。
  3. 有些地方註釋含義模糊,方法太長,不利於源碼閱讀。建議將代碼進行重構,過長的代碼段能夠拆分紅多個小的方法。
  • 總結同類編程語言或項目在代碼規範和風格的通常要求

  現代軟件架構都須要協同開發完成,高效協做即下降協同成本,提高溝通效率,所謂無規矩不成方圓,無規範不能協做。因此項目中的成員應該選擇一套統一的代碼規範。

  常見的有

  1. 名稱要以駝峯形式,方法名、參數名、成員變量、局部變量都統一使用首字母小寫的駝峯風格,類名使用首字母大寫的駝峯風格;
  2. 命名要有意義。代碼中的命名禁止使用拼音與英文混合的方式,更不容許直接使用中文的方式。正確的英文拼寫和語法可讓閱讀者易於理解,避免歧義
  3. 縮進要統一。好比,採用 4 個空格縮進,禁止使用 tab 字符。if/for/while/switch/do 等保留字與括號之間都必須加空格等。

  對於Java這門編程語言來講,阿里巴巴公司爲了規範Java的代碼風格,推出了《阿里巴巴Java開發手冊》。Java程序員能夠根據該手冊上的說明進行編碼。不只如此阿里還在IDEA上開發了一款名爲阿里編碼規範的插件,只要下載並安裝此插件,能夠自動對代碼進行編碼規範檢測,能夠說是十分方便了。

  圖8 不符合編碼規範會有提示

相關文章
相關標籤/搜索