1 命名規範1.1 Package命名規範
【JAVA-1】 Package名要使用小寫字,中間用“.”分割【規定】
說明·原因
如無特殊規定,請將Package名統一成小寫字。這是Java的一般規則。
例
package cn.co.AAA.BBB; //錯誤 package cn.co.aaa.bbb; //正確 |
【JAVA-2】 Package名要有意義【規定】
說明·原因
盡量給Package命名一個能聯想到Package內容的名字。如果使用功能ID、流水號等來命名Package的話,不能馬上明白其意思。遵守此規範,將提高代碼的易讀性。
例
package cn.co.aaa.bbb.s00001; //錯誤 package cn.co.aaa.bbb.station; //正確 |
【JAVA-3】 Package名是不可省略的【規定】
說明·原因
即使Package名長,也請盡量不要省略,而使用易懂的名字。
例
package cn.co.aaa.bbb.t.e.s.t; //錯誤 package cn.co.aaa.bbb. test; //正確 |
【JAVA-4】 package名中禁止使用除小寫英語句半形字母以外的任何字元,但是根據需要可以使用底線“_”【規定】
例
package cn.co.aaa.bbb.my_app; |
1.2 Import命名規範
【JAVA-5】 Import包的次序是java.* →javax.* →中介軟體、庫等提供的package→ 程式中的package【規定】
例
import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Appender; import org.apache.log4j.Category; import cn.co.aaa.bbb.thatpack; |
【JAVA-6】 Import需要指出import哪一個類,禁止import整個package【推薦】
例
import java.util.*; //錯誤 import java.util.HashMap; //正確 |
1.3 Class命名規範
【JAVA-7】 Class的名稱應該是一個名詞短語。可以是“形容詞/名詞 + 名詞”的形式【推薦】
例
public class InputDataStream{ public class OrderItem{ public class Developer{ |
【JAVA-8】 Class名要能體現其作用【推薦】
說明·原因
Class名中,請不要使用功能ID、流水號等難懂的名字。Class名要使用有意義的字串,以便能聯想到其Class的內容。這樣將提高代碼的易讀性。
例
public class S0001 { //錯誤 public class Sample { //正確 |
【JAVA-9】 Class名中單詞的第1個字母要大寫【規定】
說明·原因
請大寫Class名的第1個字母。當Class名由多個單片語成時,每個單詞的第1個字母(段落)都要大寫。這是Java的一般規則。
public class sampleclass { //錯誤 public class SampleClass { //正確 |
【JAVA-10】 異常Class名的最後要加上“Exception” 【推薦】
說明·原因
對異常Class名,請在名字最後加上“Exception”。統一此寫法,將提高代碼的易讀性。
例
public class Sample extends Exception{ //錯誤 public class SampleException extends Exception{ //正確 |
【JAVA-11】 Interface名要基於Class名【推薦】
說明·原因
Interface的命名規則基本上要基於Class名。統一此寫法,將提高代碼的易讀性。如果需要與Class名區分,請在開頭加上“I”。
例
public class Sample implements ISample { //Interface名為ISample |
【JAVA-12】 抽象Class名要基於Class名【推薦】
說明·原因
抽象Class名的命名規則基本上要基於Class名。統一此寫法,將提高代碼的易讀性。名字要以“Abstract”開始,再加上能聯想到Subclass名的名字。
例
public abstract class AbstractSample { //抽象Class名為AbstractSample |
【JAVA-13】 實現Class名要基於Class名【推薦】
說明·原因
實現Class名的命名規則基本上要基於Class名。統一此寫法,將提高代碼的易讀性。如果需要與Interface區分,請在最後加上“Impl”。
例
public class SampleImpl implements ISample { //實現Class名為SampleImpl |
【JAVA-14】 在能力附加型的Interface名後面加上“able” 【推薦】
說明·原因
對於Class來說,會存在附加某能力的Interface,如Runnable, Cloneable等。定義能力附加型的Interface時,請使用能表示其能力的形容詞(~able)來命名。統一此寫法,將提高代碼的易讀性。
例
public class Sample implements IPluggable { |
【JAVA-15】 Test Class名的格式為“測試對象Class名 + Test” 【推薦】
說明·原因
Test Class名的格式為“測試對象Class名 + Test”。統一此寫法,將提高代碼的易讀性。以下的例子是考慮了JUnit 的例子。
例
public class SampleClassTest extends TestCase{ |
【JAVA-16】 進行測試或Package測試的所有的Class名的格式為“AllTest”或“Package名 + Test” 【推薦】
說明·原因
進行測試或Package測試的所有的Class名的格式為“AllTest”或“Package名 + Test”。統一此寫法,將提高代碼的易讀性。
例
public class AllTest { package cn.co.aaa.bbb; public class StationTest { |
1.4 Method命名規範
【JAVA-17】 Method名只在段落時採用大寫字【規定】
說明·原因
關於Method名,只有一個單詞時,全部採用小寫字。當由多個單片語成時,第2個以後的單詞的第1個字母要大寫。這是Java的一般規則。
例
public void Samplemethod() {} //錯誤 public void sampleMethod() {} //正確 |
【JAVA-18】 產生Object的Method名的格式是“"create"+Object名” 【推薦】
說明·原因
關於產生Object的Method(Factory Method)名,以“create”開始,並在其之後加上此Method產生的Object名。統一此寫法,將提高代碼的易讀性。
例
public Sample createSample(){ |
【JAVA-19】 轉換Method名的格式是“"to"+Object名” 【推薦】
說明·原因
關於將Object轉換成其他Object的Method(Converter Method),以“to”開始,並在其之後加上轉換後的Object的名字。統一此寫法,將提高代碼的易讀性。
例
public Another toAnother(){ |
【JAVA-20】 Getter Method名的格式是“"get"+屬性名稱” 【推薦】
說明·原因
關於取得屬性的Method(Getter Method)的名字,以“get”開始,並在其之後加上取得的屬性名稱。統一此寫法,將提高代碼的易讀性。這是JavaBeans的規範。
例
public String getSampleName(){ |
【JAVA-21】 Setter Method名的格式是“"set"+屬性名稱” 【推薦】
說明·原因
關於設定屬性的Method(Setter Method)名字,以“set”開始,並在其之後加上設定的屬性名稱。統一此寫法,將提高代碼的易讀性。這是JavaBeans的規範。
例
public void setSampleName(String name){ |
【JAVA-22】 傳回值為boolean類型的Method的名稱應能看出true/false的狀態【推薦】
說明·原因
關於返回boolean變數的Method名,要能看出其傳回值的true/false指的是什麼樣的狀態。推薦使用表示Yes或No的疑問句的描述形式(例:is+名片)。統一此寫法,將提高代碼的易讀性。
例
public boolean isAsleep(){ public boolean canSpeak(){ public boolean hasExpired(){ public boolean exists(){ public boolean hasValue(){ |
【JAVA-23】 在查詢方法中應使用find作為首碼【推薦】
說明·原因
例
public String findNameByID (String ID){ |
1.5 變數命名規範
【JAVA-24】 常量全部為public static final、全部是大寫字、段落用“_” 【規定】
說明·原因
常量全部用static final聲明,變數名全部用大寫字描述。常量名由多個單片語成時,各單詞之間用“_”分開。統一此寫法,將提高代碼的易讀性。另外,一般把常量的public修飾改成protected和private沒有特別大的意義。
例
public static final int SAMPLE_VALUE = 10; |
【JAVA-25】 變數名要反映其作用【規定】
說明·原因
變數名要能反映出其作用。統一此寫法,將提高代碼的易讀性。
例
private String str1; private String str2; //錯誤 private String serverName; private String clientName; //正確 |
【JAVA-26】 Instance變數名的格式是“’_’+變數名”【推薦】
說明·原因
關於Instance變數名,請用“_”和Method的Parameter名或Local變數名來區分。這樣將提高代碼的易讀性。
例
private String name; public void setName(String name){ this.name = name; } //錯誤 private String _name; public void setName(String name){ this._name = name; } //正確 |
【JAVA-27】 Instance的欄位名全部使用大寫字【規定】
說明·原因
關於Instance的欄位名,必須全部使用大寫字。Instance的欄位經常會是static及final。因此,需要對這些欄位,按照與常量名相同的命名規則來命名。
例
interface IFV { int max = 1000; // 錯誤 } interface IFV { int MAX = 1000; // 正確 } |