參與國際化項目需遵循的java命名規範

  • 2019 年 11 月 13 日
  • 筆記

筆者最近幫助一些朋友應聘遠程工作(一般都是一些國外的項目),國外的項目負責人一般都會要求提供github帳號或者一些源程式碼,很多朋友在這一關就被篩選掉了,其中不乏一些我認為技術非常厲害的行業大牛,他們都研發過很多的大型項目,經驗與技術實力都非常不錯。那究竟是為什麼呢?我經過仔細的研究,發現他們都有一個共同點,就是命名規範不太嚴謹。我對這些在應聘遠程項目第一關就被篩選掉了的程式設計師做了一個問卷調查:你都知道哪些java命名規範?最終結果顯示:

  • 類的首字母要大寫,使用駝峰標識
  • 變數首字母小寫,使用駝峰標識
  • 常量字母全部大寫,下劃線分隔
  • 使用英文單詞,不要使用拼音

在很多的java程式設計師看來能做到這些,就已經是很規範的命名方式了,究竟還有哪些不足之處?筆者總結了一下java開發中的最常用的一些命名規範,如果有不足之處,還請各位朋友不吝賜教!如果您覺得本文對您有幫助,期待您能幫忙關注、轉發!

一、package命名規範

軟體項目的包名稱應該是由您的公司的域名的倒序,再加上您的項目的名稱,均使用小寫字母,不能包含其他符號。可以在最後添加包的版本,如下圖實例所示:

  org.example.aprojectname  org.example.aprojectname.innerpkg  org.example.aprojectname.innerpkg.anotherpkg  org.example.aprojectname.innerpkg2    org.example.anotherproject  org.example.anotherproject.v2

二、Class命名規範

類名必須是一個 名詞,使用駝峰命名方式,首字母應大寫,例如HashMap。應該可以從類名中推斷出它大概會包含什麼樣的函數和變數。例如:

  class Student{}    class ArrayList{}    class HashMap{}    class ComputerEngineer{}  

三、Interface介面

介面名稱應盡量使用 形容詞。有時也可以是名詞,如:ListMap。與類的命名規範一樣,使用駝峰命名,首字母應大寫。如下:

  interface Cloneable{}    interface AutoCloseable{}    interface PreparedStatement{}    interface Engineer{}
  • 介面通常代表一類對象的總稱。形容詞「會跑的」可以是一個介面名稱,實現類可以是人、狗、貓。
  • 而使用名詞需要具有一定的概括性,「爪子」比「貓爪」更像是一個介面的名字。

四、變數

變數盡量是簡短而且有意義的名詞,遵循駝峰命名,首字母小寫。並且不要使用劃線(’_‘)或美元符號’$‘字元。

  • 在for循環中使用的計數變數,可以是i,j,k,m和n,它們也常用於整數
  • 對於 布爾值,通常開頭應該是ishas
  • 可以使用Of串聯多個名詞
  • 可以使用形容詞修飾名詞
  int countOfCustomer;   //Of串聯    float averageInterest;   //形容詞修飾名詞    long timeInMillisecond, daysInYear;    //時間    boolean isEngineer, isCompleted, hasSubmitted;   //布爾類型  

五、常量

常量也是程式的重要組成部分。也要使用名詞,或者形容詞修飾的名詞。全部字母大寫,使用下劃線分隔單詞。

  public static final float PI = 3.14;    static int CREATED_ON_YEAR = 2019;  

六、方法

方法名稱要使用動詞,並且應該從名稱中可以推斷出方法的功能,盡量簡短。使用駝峰標誌命名。通常, get 和 set 用於分別獲取數據和設置數據。對於布爾值,方法名稱應與與變數名稱相同。

  void print(Object obj);    void remove(Obejct obj);    Object update();    int getCountOfCustomer();//getter    void setCountOfCustomer(int countOfCustomers);//setter    boolean isUserAdmin(User user);  //布爾類型  

七、泛型

使用單個大寫字母, T使用的比較廣泛。E通常被用於集合元素,KV通常被用於映射關係。請勿使用多字元。

  public <T> void print(T t);    interface List<E>{}    class HashMap<K, V> {};  

期待您的關注