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

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

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

在不少的java程序員看來能作到這些,就已是很規範的命名方式了,究竟還有哪些不足之處?筆者總結了一下java開發中的最經常使用的一些命名規範,若是有不足之處,還請各位朋友不吝賜教!若是您以爲本文對您有幫助,期待您能幫忙關注、轉發!git

1、package命名規範

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

org.example.aprojectname
org.example.aprojectname.innerpkg
org.example.aprojectname.innerpkg.anotherpkg
org.example.aprojectname.innerpkg2

org.example.anotherproject
org.example.anotherproject.v2

2、Class命名規範

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

class Student{}

class ArrayList{}

class HashMap{}

class ComputerEngineer{}

3、Interface接口

接口名稱應儘可能使用 形容詞。有時也能夠是名詞,如:ListMap。與類的命名規範同樣,使用駝峯命名,首字母應大寫。以下:spring

interface Cloneable{}

interface AutoCloseable{}

interface PreparedStatement{}

interface Engineer{}
  • 接口一般表明一類對象的總稱。形容詞「會跑的」能夠是一個接口名稱,實現類能夠是人、狗、貓。
  • 而使用名詞須要具備必定的歸納性,「爪子」比「貓爪」更像是一個接口的名字。

4、變量

變量儘可能是簡短並且有意義的名詞,遵循駝峯命名,首字母小寫。而且不要使用劃線('_')或美圓符號'$'字符。springboot

  • 在for循環中使用的計數變量,能夠是i,j,k,m和n,它們也經常使用於整數
  • 對於 布爾值,一般開頭應該是ishas
  • 可使用Of串聯多個名詞
  • 可使用形容詞修飾名詞
int countOfCustomer;   //Of串聯

float averageInterest;   //形容詞修飾名詞

long timeInMillisecond, daysInYear;    //時間

boolean isEngineer, isCompleted, hasSubmitted;   //布爾類型

5、常量

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

public static final float PI = 3.14;

static int CREATED_ON_YEAR = 2019;

6、方法

方法名稱要使用動詞,而且應該從名稱中能夠推斷出方法的功能,儘可能簡短。使用駝峯標誌命名。一般, get 和 set 用於分別獲取數據和設置數據。對於布爾值,方法名稱應與與變量名稱相同。學習

void print(Object obj);

void remove(Obejct obj);

Object update();

int getCountOfCustomer();//getter

void setCountOfCustomer(int countOfCustomers);//setter

boolean isUserAdmin(User user);  //布爾類型

7、泛型

使用單個大寫字母, T使用的比較普遍。E一般被用於集合元素,KV一般被用於映射關係。請勿使用多字符。rest

public <t> void print(T t);

interface List<e>{}

class HashMap<k, v> {};

期待您的關注

相關文章
相關標籤/搜索