Java編碼指南(1)

來源:互聯網
上載者:User
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;  // 正確
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.