命名不能以下劃線或美元進行開始和結(jié)尾
//反面教材
private String _name;
private Integer $Object;
private boolean name_;
private BigDecimal Object$;
禁止使用拼音和英文的并用,禁止直接使用拼音和中文(知名的拼音等同于英文)
//反面教材
private String DaZhePromotion;//[打折]
//正面教材
private String taobao;
需要使用駝峰樣式的命名
1).類名,MarcoPolo,但是類名的開頭必須為大寫
2).方法名
3).參數(shù)名
4).成員變量
5).局部變量
常量全部大寫,單詞之間用下劃線隔開
//正面教材
private String MAX_STOCK_COUNT;
DTO,POJO,JO類中布爾型的成員變量不要以is開頭
說明:定義為基本數(shù)據(jù)類型Boolean isDeleted的屬性,它的方法也是isDeleted(),RPC框架在反向解析的時候,“以為”對應(yīng)的屬性名稱是 deleted,導(dǎo)致屬性獲取不到,進而拋出異常。
數(shù)組定義時,中括號放置在類型后面,禁止放置在變量名后面
//正面教材
String[] params = new String[5];
對于使用了設(shè)計模式的類在命名時要體現(xiàn)
//正面教材
class OrderFactory:工廠模式
class LoginProy:代理模式
class ResourceObserver:觀察者模式
對于long長整型的定義禁止使用l,要使用L
//反面教材
private longa = 2l;//像這樣的定義在一定程度上會與數(shù)字21混淆
類內(nèi)部定義方法的順序(推薦)
公有方法或保護方法 > 私有方法 > getter/setter 方法
說明:公有方法是類的調(diào)用者和維護者最關(guān)心的方法,首屏展示最好;保護方法雖然只是子類
關(guān)心,也可能是“模板設(shè)計模式”下的核心方法;而私有方法外部一般不需要特別關(guān)心,是一個
黑盒實現(xiàn);因為方法信息價值較低,所有Service和DAO的getter/setter方法放在類體最
后。
接口的名字要以Impl結(jié)尾
如InterfaceMethodNameStyleImpl
接口的名字也可以如此命名:以I(大寫的i)開頭,以Service結(jié)尾,如IUserService
接口中的方法和屬性不要加任何的修飾符
//反面教材
public void f();
public String xxx = "hello world";
//正面教材
void update();
Object的equals方法容易拋空指針異常,應(yīng)使用常量或確定有值的對象來調(diào)用equals

所有的相同類型的包裝類對象之間值的比較,全部使用equals方法比較
說明:對于Integer var= ?在-128至127范圍內(nèi)的賦值,Integer對象是在IntegerCache.cache產(chǎn)生,會復(fù)用已有對象,這個區(qū)間內(nèi)的Integer值可以直接使用==進行判斷,但是這個區(qū)間之外的所有數(shù)據(jù),都會在堆上產(chǎn)生,并不會復(fù)用已有對象,這是一個大坑,推薦使用equals方法進行判斷。

循環(huán)體內(nèi),字符串的連接方式,使用StringBuilder的append方法進行擴展。
說明:反編譯出的字節(jié)碼文件顯示每次循環(huán)都會new出一個StringBuilder對象,然后進行append操作,最后通過toString方法返回String對象,造成內(nèi)存資源浪費。
類成員與方法訪問控制從嚴(yán)
1)如果不允許外部直接通過new來創(chuàng)建對象,那么構(gòu)造方法必須是private。2)工具類不允許有public或default構(gòu)造方法。
3)類非static成員變量并且與子類共享,必須是protected。
4)類非static成員變量并且僅在本類使用,必須是private。
5)類static成員變量如果僅在本類使用,必須是private。
6)若是static成員變量,必須考慮是否為final。
7)類成員方法只供類內(nèi)部調(diào)用,必須是private。
8)類成員方法只對繼承類公開,那么限制為protected。
說明:任何類、方法、參數(shù)、變量,嚴(yán)控訪問范圍。過于寬泛的訪問范圍,不利于模塊解耦。
思考:如果是一個private的方法,想刪除就刪除,可是一個public的service方法,或者
一個public的成員變量,刪除一下,不得手心冒點汗嗎?變量像自己的小孩,盡量在自己的
視線內(nèi),變量作用域太大,如果無限制的到處跑,那么你會擔(dān)心的。