成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

教妹學Java:Java命名約定

開發 后端
由于互聯網上的域名是不會重復的,所以多數開發人員采用自己公司(或者個人博客)在互聯網上的域名稱作為包的唯一前綴。比如我文章中出現的代碼示例的包名就是 package com.itwanger。

[[352834]]

就有同學留言說“妹妹大一就開始學習 Java 了,有點厲害啊。”我只能說,要對妹妹負責,就必須得趁早,因為生意經有這么一句話:

人無我有,人有我好,人好我早,人多我早。

這句話用在生意上合適,用在學習上也是再合適不過了。當別人都不懂一門新技術的時候,你懂,那么恭喜你,你已經遙遙領先了;當別人也懂了,你比他精通,那么你就是牛逼;當別人也精通了,你比他精通的早,還是有優勢,對吧?

強調一下,《教妹學 Java》面向的是零基礎的 Java 愛好者,我希望能幫助同學們輕松邁進編程世界的大門,為后續的深入學習打下堅實的基礎。

“二哥,Java 中的命名約定都有哪些呢?”三妹的臉上泛著甜甜的笑容,她開始對接下來要學習的內容充滿期待了,這正是我感到欣慰的地方。

“對于我們中國人來說,名字也是有講究的,比如說我叫沉默王二,你就叫沉默王三,哈哈。”我笑著對三妹說。

命名約定決定我們使用什么樣的標識符來命名包、類、字段、方法等等,雖然這個規則不是強制的,可以遵守,也可以不遵守,但如果不遵守的話,就會帶來很多不必要的麻煩。

起個好的名字,就好像穿一件得體的衣服,呈現給人的用戶體驗是完全不一樣的。

好的命名可以讓你的代碼更易讀,包括你自己和你的小伙伴,看一眼,不用想太多,就能明白代碼是干嘛的。

拿我這個筆名“沉默王二”來舉例吧,讀起來我就覺得朗朗上口,讀者看到這個筆名就知道我是一個什么樣的人——對不熟的人保持沉默,對熟的人妙語連珠,哈哈。

01、包(package)

包的命名應該遵守以下規則:

  • 應該全部是小寫字母
  • 點分隔符之間有且僅有一個自然語義的英語單詞
  • 包名統一使用單數形式,比如說 com.itwanger.util 不能是 com.itwanger.utils
  • 在最新的 Java 編程規范中,要求開發人員在自己定義的包名前加上唯一的前綴。由于互聯網上的域名是不會重復的,所以多數開發人員采用自己公司(或者個人博客)在互聯網上的域名稱作為包的唯一前綴。比如我文章中出現的代碼示例的包名就是 package com.itwanger。

02、類(class)

類的命名應該遵守以下規則:

  • 必須以大寫字母開頭
  • 最好是一個名詞,比如說 System
  • 類名使用 UpperCamelCase(駝峰式命名)風格
  • 盡量不要省略成單詞的首字母,但以下情形例外:DO/BO/DTO/VO/AO/ PO / UID 等

另外,如果是抽象類的話,使用 Abstract 或 Base 開頭;如果是異常類的話,使用 Exception 結尾;如果是測試類的話,使用 Test 結尾。

03、接口(interface)

接口的命名應該遵守以下規則:

  • 必須以大寫字母開頭
  • 最好是一個形容詞,比如說 Runnable
  • 盡量不要省略成單詞的首字母

來看個例子:

  1. interface Printable {} 

接口和實現類之間也有一些規則:

  • 實現類用 Impl 的后綴與接口區別,比如說 CacheServiceImpl 實現 CacheService 接口
  • 或者,AbstractTranslator 實現 Translatable 接口

04、字段(field)和變量(variable)

字段和變量的命名應該遵守以下規則:

  • 必須以小寫字母開頭
  • 可以包含多個單詞,第一個單詞的首字母小寫,其他的單詞首字母大寫,比如說 firstName
  • 最好不要使用單個字符,比如說 int a,除非是局部變量
  • 類型與中括號緊挨相連來表示數組,比如說 int[] arrayDemo,main 方法中字符串數組參數不應該寫成 String args[]
  • POJO 類中的任何布爾類型的變量,都不要加 is 前綴,否則部分框架解析會引起序列化錯誤,我自己知道的有 fastjson
  • 避免在子類和父類的成員變量之間、或者不同代碼塊的局部變量之間采用完全相同的命名,使可理解性降低。子類、父類成員變量名相同,即使是 public 類型的變量也能夠通過編譯,另外,局部變量在同一方法內的不同代碼塊中同名也是合法的,這些情況都要避免。

反例:

  1. public class ConfusingName { 
  2.     public int stock; 
  3.  
  4.     // 非 setter/getter 的參數名稱,不允許與本類成員變量同名 
  5.     public void get(String alibaba) { 
  6.         if (condition) { 
  7.             final int money = 666; 
  8. // ... 
  9.         } 
  10.         for (int i = 0; i < 10; i++) { 
  11. // 在同一方法體中,不允許與其它代碼塊中的 money 命名相同 final int money = 15978; 
  12. // ... 
  13.         } 
  14.     } 
  15.  
  16. class Son extends ConfusingName { 
  17. // 不允許與父類的成員變量名稱相同 public int stock; 

05、常量(constant)

常量的命名應該遵守以下規則:

  • 應該全部是大寫字母
  • 可以包含多個單詞,單詞之間使用“_”連接,比如說 MAX_PRIORITY,力求語義表達完整清楚,不要嫌名字長
  • 可以包含數字,但不能以數字開頭

來看個例子:

  1. static final int MIN_AGE = 18;   

06、方法(method)

方法的命名應該遵守以下規則:

  • 必須以小寫字母開頭
  • 最好是一個動詞,比如說 print()
  • 可以包含多個單詞,第一個單詞的首字母小寫,其他的單詞首字母大寫,比如說 actionPerformed()

來看個例子:

  1. void writeBook(){} 

Service/DAO 層的方法命名規約:

  • 獲取單個對象的方法用 get 做前綴
  • 獲取多個對象的方法用 list 做前綴,復數結尾,如:listObjects
  • 獲取統計值的方法用 count 做前綴
  • 插入的方法用 save/insert 做前綴
  • 刪除的方法用 remove/delete 做前綴
  • 修改的方法用 update 做前綴

07、總結

除了以上這些規則以外,還有一些共同的規則需要遵守,比如說:

  • 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。反例:_name / __name / $name / name_ / name$ / name__
  • 所有編程相關的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。反例:DaZhePromotion [打折] / getPingfenByName() [評分] / String fw[福娃] / int 某變量 = 3
  • 代碼和注釋中都要避免使用任何語言的種族歧視性詞語。反例:RIBENGUIZI / Asan / blackList / whiteList / slave
  • 方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格。
  • 杜絕完全不規范的縮寫,避免望文不知義。反例:AbstractClass “縮寫”成 AbsClass;condition “縮寫”成 condi;Function 縮寫”成 Fu,此類隨意縮寫嚴重降低了代碼的可閱讀性。
  • 為了達到代碼自解釋的目標,任何自定義編程元素在命名時,使用盡量完整的單詞組合來表達。
  • 在常量與變量的命名時,表示類型的名詞放在詞尾,以提升辨識度。正例:startTime / workQueue / nameList / TERMINATED_THREAD_COUNT
  • 如果模塊、接口、類、方法使用了設計模式,在命名時需體現出具體模式。將設計模式體現在名字中,有利于閱讀者快速理解架構設計理念。比如說:public class OrderFactory;public class LoginProxy;public class ResourceObserver;
  • 枚舉類名帶上 Enum 后綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。比如說:枚舉名字為 ProcessStatusEnum 的成員名稱:SUCCESS / UNKNOWN_REASON。

“好了,三妹,關于 Java 中的命名約定就先說這么多吧,你平常在寫代碼的時候注意一下,養成好習慣。”轉動了一下僵硬的脖子后,我對三妹說。

“好的,二哥,你辛苦了,原來命名約定還有這么多說法,真的是你知道的越多,你不知道的越多啊。”

 

責任編輯:武曉燕 來源: 沉默王二
相關推薦

2021-05-10 11:38:07

Java數組IDEA

2021-06-06 20:56:48

Java內存 intern

2020-10-26 09:36:45

Java變量數據

2021-07-08 22:43:41

ThrowThrowsJava

2021-07-26 17:22:02

Java

2021-07-03 17:53:52

Java異常處理機制

2021-06-11 18:08:00

Java字符串拼接

2020-10-29 10:28:31

Java數據類型

2021-07-30 09:32:55

JavaEquals

2020-11-13 10:29:37

流程控制語句

2024-04-11 10:20:57

JavaScript前端Web

2009-12-16 16:24:00

Ruby on Rai

2020-12-09 05:19:35

static關鍵字Java

2023-08-07 08:52:53

Vue組件Props 命名

2022-02-23 09:03:29

JavaScript開發命名約定

2009-08-19 15:24:30

.NET命名規范

2010-03-05 11:53:20

Python命名約定

2009-11-10 15:36:24

VB.NET命名約定

2009-04-12 09:11:03

Symbian諾基亞移動OS

2009-04-12 09:13:51

Symbian諾基亞移動OS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合第一页 | 精品美女久久久久久免费 | av国产精品 | 美女视频一区二区三区 | 日韩欧美精品一区 | 久久久久久久久久久久一区二区 | 国产网站在线播放 | 欧美一区二区在线播放 | 久久国产精品视频 | 新超碰97 | 国产伦精品一区二区 | 亚洲三级在线观看 | 亚洲视频一区在线观看 | 亚洲日韩中文字幕 | 成人午夜激情 | 久久中文字幕在线 | 欧美mv日韩mv国产网站91进入 | 一级日批片 | 超碰欧美 | 婷婷午夜天 | 国产激情福利 | 国产精品99一区二区 | 国产精品高潮呻吟久久 | 欧美日韩在线视频一区二区 | 国产日韩亚洲欧美 | h片在线观看免费 | 久久精品国产一区二区三区 | 小川阿佐美pgd-606在线 | 一区二区三区视频在线观看 | 欧美精品久久久久 | 中文字幕成人 | 久久久久国产精品一区二区 | 久久久亚洲一区 | 男人的天堂久久 | 黄视频网址| 国产成人精品一区二区三区在线 | 亚洲精品自在在线观看 | 久久免费精品视频 | 成年视频在线观看 | 日韩精品在线观看一区二区 | 国产精品久久久久久久久久免费看 |