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

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

個人工程實踐課題是《物聯網網關智能分析引擎》,基於此課題,我找了一個相似此課題的源代碼並對其代碼規範和風格進行分析。web

一、目錄結構sql

 

每個包下放置着不一樣的代碼實現,數據庫

src:存放源文件編程

WEB-INF目錄:必須目錄數組

sql:存放數據庫文件函數

web.xml:Web應用部署描述文件,必須目錄工具

lib目錄:存放第三方類庫文件優化

TLD文件:標籤庫描述文件spa

其餘靜態文件:HTML、CSS、JavaScript、圖片等

 

2.類編寫規範

 

   類的結構組織,通常按照以下的順序:
     1.常量聲明
     2.靜態變量聲明
     3.成員變量聲明
     4.構造函數部分
     5.Finalize部分
     6.成員方法部分
     7.靜態方法部分
     8.這種順序是推薦的,在實際開發中能夠按照必定的尺度修改,原則是程序更易讀。如對方法的排序按照重要性,或按照字母順序排列或按照方法之間的關係排列。
     9.每一個方法(包括構造與finalize)都是一個段。多個變量聲明按照邏輯共同組成一個段,段與段之間以空行分隔。
     10.類聲明時,要指出其訪問控制,通常爲沒有修飾符,public,和private。
     11.方法與方法之間,大的部分之間都須要以空行隔離。
     12.編寫通用性的類時,請遵照標準形式。包括定義equals()、hasCode()、toString()、Clone(實現Cloneable接口),並實現Comparable和Serialiable接口
     13.對於設計期間不須要繼承的類,儘可能使用final

 

3.變量編寫規範

 

   1.對成員變量, 儘可能採用private 
   2.每個變量聲明/定義佔一行(參數變量除外),如

 

int a;
int b;

 

   比int a,b; 更容易讀, 更容易查找bug

 

   3.局部變量在使用前必須初始化,通常在聲明時初始化
   4.變量的聲明要放在程序塊的開始位置

 

     如

 

複製代碼
public void myMethod() {
  int int1 = 0; // beginning of method block
  if (condition) {
    int int2 = 0; // beginning of "if" block
    ...
  }
}
複製代碼

 

    一種例外狀況是在for語句中,定義聲明不只不佔一行,還在表達式內部,徹底採用Eclips生成,如:

 

for(int i = 0; i<100; i++)

 

    5.數組的申明採用 <數據類型[] + 變量名>方式如

 

char[] buffer;

 

而不是

 

char buffer[];

 

4.方法編寫規範

 

    1.對成員方法,不要輕易的採用public的成員變量。主要的修飾符有public, private, protected, 無
    2.空方法中方法聲明和函數體可都在一行。如: void func(){}
    3.方法和方法之間空一行
    4.方法的文檔註釋放在方法的緊前面,不能空一行。
    5.避免過多的參數列表,儘可能控制在5個之內,若須要傳遞多個參數時,當使用一個容納這些參數的對象進行傳遞,以提升程序的可讀性和可擴展性
    6.方法中的循環潛套不能超過2層
    7.對於設計期間不須要子類來重載的類,儘可能使用final
    8.每一個方法儘可能代碼行數儘可能不要超過100行(有效代碼行,不包括註釋),但必須保證邏輯的完整性
    9.接口中的方法默認級別爲protected,只有很確認其它子系統的包會調用本身子系統的接口中的方法時,纔將方法暴露爲public.

 

5.語言使用規範

 

   1.避免變量的定義與上一層做用域的變量同名。
   2.局部變量在使用時刻聲明,局部變量/靜態變量在聲明時同時初始化
   3.在與常數做比較時常數放在比較表達式的前面如:

 

if(「simpleCase」.equals(obj))…
if(null == obj)….

 

   4.return語句中,不要有複雜的運算。
   5.switch語句,須要一個缺省的分支

6. 代碼編寫規範

6.1 縮進
縮進應該是每行4個空格,在使用不一樣的源代碼管理工具時Tab字符將由於用戶設置的不一樣而擴展爲不一樣的寬度.

6.2 空行
相對獨立的程序塊之間、變量說明以後必須加空行。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ( !validNill(nill))
{
   ... // program code
}
 
repssnInd = sendData[index].repssn_index;
repssnNill  = sendData[index].nill;
應以下書寫
if (!validNill(nill))
{
    ... // program code
}
repssnInd = sendData[index].repssn_index;
repssnNill  = sendData[index].nill;

6.3空格的使用 
在兩個以上的關鍵字、變量、常量進行對等操做時,它們之間的操做符以前、以後或者先後要加空格;進行非對等操做時,若是是關係密切的當即操做符(如->),後不該加空格。

說明:採用這種鬆散方式編寫代碼的目的是使代碼更加清晰。

左括號和後一個字符之間不該該出現空格, 一樣, 右括號和前一個字符之間也不該該出現空格. 下面的例子說明括號和空格的錯誤及正確使用:

CallProc( AParameter ); // 錯誤                CallProc(AParameter); // 正確

7. 注意代碼的效率
編程時要常常注意代碼的效率。

說明:代碼效率分爲全局效率、局部效率、時間效率及空間效率。全局效率是站在整個系統的角度上的系統效率;局部效率是站在模塊或函數角度上的效率;時間效率是程序處理輸入任務所需的時間長短;空間效率是程序所需內存空間,如機器代碼空間大小、數據空間大小、棧空間大小等。

相關文章
相關標籤/搜索