編碼規范對於開發人員來說是非常重要的,有以下幾個原因:
1.一個軟件的生命周期中,80%的花費在於維護
2.幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發人員來維護
3.編碼規范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼
4.如果你將源碼作為產品發布,就需要確任它是否被很好的打包並且清晰無誤,一如你已構建的其它任何產品
5.為來自不同的項目組或個人提供標准的代碼格式。
6.增加易讀性。
在不用Java兩年多后因工作需要我又要轉入Java開發,為此我整理出下面的編碼規范,以便在以后的工作中遵守。
一 命名規則
1)包:命名應該都是名詞或名詞性詞組,全部小寫,單詞之間用"."分開;一般使用本公司/組織網站域名的逆序后跟具體的軟件內部模塊名
包命名舉例: package com.sun.java; package com.mycompany.db;
2)類:名詞或名詞性詞組,每個單詞首字母大寫;一般不使用縮寫,除非其縮寫更通用和便於理解,如HTML;當要區別接口和實現類的時候,可以在類的后面加上"Impl",例如:interface Container與class ContainerImpl;Exception類用"Exception"做為類命名的結尾,例如:DataNotFoundException;抽象類用"Abstract"做為類命名的開頭,例如:AbstractBeanDefinition,AbstractBeanFactory;Test類最好能用"Test"做為類命名的結尾。例如:ContainerTest
類命名舉例:class Person; class SpringRain
3)接口: 同"類"的命名規則
接口命名舉例:interface Runner;
4)方法:動詞或動詞性詞組,首字母小寫,第二個及以后的單詞首字母大寫;
方法命名舉例:run(); displayInformation();
5)變量: 名詞或名詞性詞組,首字母小寫,第二個及以后的單詞首字母大寫;
不提倡使用下畫線"_"和美元符"$"作為變量開頭;單詞間可以使用下畫線分隔;變量名不宜過長但也應有意義,除非是臨時使用(例如只涉及幾行代碼)后即丟棄的情況,不建議使用單個字母做變量名,常用的臨時使用的變量名包括表示整數的i,j,k,m,n和表示字母的c以及表示異常對象的e等。
變量命名舉例:int age; int student_age; String studentName; Exception e;
6)常量:每一個單詞都要大寫,單詞之間用"_"分開。
常量命名舉例:final static MIN_WIDTH = 4;final static DEFAULT_CONTAINER_SIZE = 20;
7)文件的命名:java源程序文件以.java結尾,編譯后的文件以.class結尾。例如:Container.java,Container.class。
總結:類名首字母應該大寫。字段、方法以及對象(句柄)的首字母應小寫。對於所有標識符,其中包含的所有單詞都應緊靠在一起,而且大寫中間單詞的首字母。若在定義中出現了常數初始化字符,則大寫static final基本類型標識符中的所有字母。這樣便可標志出它們屬於編譯期的常數。 Java包(Package)屬於一種特殊情況:它們全都是小寫字母,即便中間的單詞亦是如此。對於域名擴展名稱,如com,org,net或者edu等,全部都應小寫。
二 文件組織
1. 一個文件由被空行分割而成的段落以及標識每個段落的可選注釋共同組成。超過2000行的程序難以閱讀,所以一個java程序文件中的代碼行數不能超過2000行,除非有特殊原因。每個Java源文件都包含一個單一的公共類或接口。若私有類和接口與一個公共類相關聯,可以將它們和公共類放入同一個源文件。公共類必須是這個文件中的第一個類或接口。
Java源文件還遵循以下規則,這個規則規定了java程序段落的順序:
- 開頭注釋
- 包和引入語句
- 類和接口聲明
2.在一個Java類中,各部分順序:
1)屬性聲明
2)構造方法聲明
3)static語句
4)普通方法聲明
5)main方法聲明
6)內部類的聲明
總結:一般一個完整的java文件內容如下:
1) 包的定義
2) impot類(輸入包的順序、避免使用*)輸入包應該按照java.*.*,javax.*.*,org.*.* ,com.*.*的順序import;在import的時候不應該使用* (例如: java.util.*)
3) 類或接口的定義
4)靜態變量定義,按public,protected,private順序
5)實例變量定義,按public,protected,private順序
6)構造方法
7)方法定義順序按照public方法(類自己的方法),實現接口的方法,重載的public方法,受保護方法,包作用域方法和私有方法。
注意:一般類中每個方法的代碼行數不要超過100行。
三 分隔和縮進
1.使用空行
在下述情況下使用單行的空白行來分隔:
1)在方法之間
2)在方法內部代碼的邏輯段落小節之間
3)在方法中聲明局部變量之后,具體的Java語句之前
4)在注釋行之前
5)在同一個源文件中定義的多個類/接口之間使用雙行的空白行來分隔
2.使用空格符
除正常的成分之間以空格符分隔名(如數據類型和變量名之間),在下述情況下也應使用一個空格符來分隔:
1)運算符和運算符之間,如: c = a + b;
2)在參數列表中的逗號后面,如: void m1(int year, int month) {}
3)在if,for,while待語句之后 如: if (a > b) {}
3.使用換行符
不建議在一行中寫多條語句,一條語句的長度一般超過了80個字符時,應該換行;
當一行表達式不能在一行內顯示,請按下列順序要求拆行:
1)在"("或"="符號后拆行
2)在","拆行
3)在一個操作符后拆行
4)把並發的拆行放到同一級別上的縮進
5)如果在拆行中再次拆分的時候遇到"(",應該新拆出來的行放在更遠的一個縮進級別上
4.使用小括號
可以使用小括號來強行規定運算順序
5.使用花括號
開始位置可以位於當前內容的尾部,也可以另起一行
6.使用縮進
在下述情況下應用縮進
1)類中的成分
2)方法體或語句塊中的成分
3)換行時的非起始行
縮減量一般為在上一級成分的基礎上再縮進四個空格,而 Eclipse 默認格式化是采用 1 個制表符的,可以采用下面的方式更改一下:Window ——> Preferences…… ——> Java ——> Code Style ——> Formatter 點右邊的"Edit……"按鈕,切換到第一個選項卡"Indentation",在 General settings 組將 Tab policy 由 Table only 改為 Space only,同時把 Indentation size 和 Tab size 改為 4,最后把最上面的 Profile name 取一個名字,名字任意,再點 OK 按鈕就可以了。以后按 Tab 鍵或者 Ctrl + Shift + F 會自動采用 4 個空格作為一個層次的縮進。在eclipse開發工具中,把代碼寫好之后,可以用快捷鍵:CTRL + SHIFT + F來自動格式化代碼。
四 聲明語句
1.變量聲明:每行聲明一個變量,並加注釋。例如:
int count; // number of containers
int count, size; // AVOID THIS!
數組聲明應該采用前綴方式。例如:
int[] table;
String[] args;
2.類或接口聲明
1) "{"和聲明語句在同一行。
2)如果不能在同一行顯示,就將"extends"或"implements"進行拆行,並放在兩個縮進級別后。
3) "}"符號應該獨自占一行。
例如:
public class ChiefExecutiveOfficer
extends Manager
implements Person {
...
}
3.方法聲明
"{"和聲明語句在同一行。
"}"符號應該獨自占一行。
總結:每行聲明一個變量,並盡量在聲明變量的同時對其進行初始化,除非其初值尚不確定。局部變量應在其所在的方法或語句塊的開頭集中聲明,而不應隨用隨聲明。
五 注釋
Java有兩種注釋方法。"/* This is a comment */"或 "// This is a comment"
第一種應該被用到寫JavaDoc上,並且都用"/**"開頭。
第二種適合於在做部分代碼的注釋,但只適合做非常短內容的注釋。
另外,對於 HTML、XML、CSS、JavaScript 我要遵守的編碼規范如下:
1,HTML、XML 由於層次縮進比較多,建議采用兩個空格作為一層縮進;
2,CSS 和 JavaScript 為了與 HTML 配合,也采用兩個空格作為一層縮進;
3,HTML、XML 的標簽名、屬性稱全部使用小寫字母,HTML 盡量能符合 XHTML 的規范,避免使用 XHTML 不推薦使用的標簽,比如:font、applet 等等;
4,HTML 的屬性值采用雙引號界定;
5,JavaScript 在盡量使用標准的語法、對象等,變量聲明能加上 var.字符串常量統一采用單引號界定