1. 您現在的位置:首頁行業資訊

        Java 開發可參考的一份命名規範--皇家娱乐

        每個公司都有不同的標準,目的是爲了保持統一,減少溝通成本,提升團隊研發效能。所以本文中是筆者結合阿裏巴巴開發規範,以及工作中的見聞針對Java領域相關命名進行整理和總結,僅供參考。

        青島java培訓--皇家娱乐

        Java中的命名規範
        好的命名能體現出代碼的特徵,含義或者是用途,讓閱讀者可以根據名稱的含義快速釐清程序的脈絡。不同語言中採用的命名形式大相徑庭,Java中常用到的命名形式共有三種,既首字母大寫的UpperCamelCase,首字母小寫的lowerCamelCase以及全部大寫的並用下劃線分割單詞的UPPERCAMELUNSER_SCORE。通常約定,類一般採用大駝峯命名,方法和局部變量使用小駝峯命名,而大寫下劃線命名通常是常量和枚舉中使用。
        前言
        設計原則和設計模式,利用好它們可以有效地改善代碼質量。但是,這些知識的合理應用非常依賴個人經驗,用不好有時候會適得其反。
        而我們接下來要講的編碼規範正好相反。編碼規範大部分都簡單明瞭,在代碼細節方面,能立竿見影地改善質量。除此之外,持續低層次、小規模重構依賴的基本上都是編碼規範,這也是改善代碼可讀性的有效手段。
        關於編碼規範、如何編寫可讀代碼,很多書籍已經講得很好了。不過,這裏我根據我自己的開發經驗,總結羅列了 20 條我個人覺得最好用的編碼規範。掌握這 20 條編碼規範,能你最快速地改善代碼質量。內容比較多:命名與註釋(Naming and Comments)、代碼風格(Code Style)和編程技巧(Coding Tips)。
        命名
        大到項目名、模塊名、包名、對外暴露的接口,小到類名、函數名、變量名、參數名,只要是做開發,我們就逃不過 “起名字” 這一關。命名的好壞,對於代碼的可讀性來說非常重要,甚至可以說是起決定性作用的。除此之外,命名能力也體現了一個程序員的基本編程素養。這也是我把 “命名” 放到第一個來講解的原因。
        取一個特別合適的名字是一件非常有挑戰的事情,即便是對母語是英語的程序員來說,也是如此。而對於我們這些英語非母語的程序員來說,想要起一個能準確達意的名字,更是難上加難了。
        實際上,命名這件事說難也不難,關鍵還是看你重不重視,願不願意花時間。對於影響範圍比較大的命名,比如包名、接口、類名,我們一定要反覆斟酌、推敲。實在想不到好名字的時候,可以去 GitHub 上用相關的關鍵詞聯想搜索一下,看看類似的代碼是怎麼命名的。
        那具體應該怎麼命名呢?好的命名有啥標準嗎?接下來,我就從 4 點來講解我的經驗。
        1. 命名多長最合適?
        在過往的團隊和項目中,我遇到過兩種截然不同的同事。有一種同事特別喜歡用很長的命名方式,覺得命名一定要準確達意,哪怕長一點也沒關係,所以,這類同事的項目裏,類名、函數名都很長。另外一種同事喜歡用短的命名方式,能用縮寫就儘量用縮寫,所以,項目裏到處都是包含各種縮寫的命名。你覺得這兩種命名方式,哪種更值得推薦呢?
        在我看來,儘管長的命名可以包含更多的信息,更能準確直觀地表達意圖,但是,如果函數、變量的命名很長,那由它們組成的語句就會很長。在代碼列長度有限制的情況下,就會經常出現一條語句被分割成兩行的情況,這其實會影響代碼可讀性。
        實際上,在足夠表達其含義的情況下,命名當然是越短越好。但是,大部分情況下,短的命名都沒有長的命名更能達意。
        所以,很多書籍或者文章都不推薦在命名時使用縮寫。對於一些默認的、大家都比較熟知的詞,我比較推薦用縮寫。這樣一方面能讓命名短一些,另一方面又不影響閱讀理解,比如,sec 表示 second、str 表示 string、num 表示 number、doc 表示 document。
        除此之外,對於作用域比較小的變量,我們可以使用相對短的命名,比如一些函數內的臨時變量。相反,對於類名這種作用域比較大的,我更推薦用長的命名方式。
        總之,命名的一個原則就是以能準確達意爲目標。不過,對於代碼的編寫者來說,自己對代碼的邏輯很清楚,總感覺用什麼樣的命名都可以達意,實際上,對於不熟悉你代碼的同事來講,可能就不這麼認爲了。所以,命名的時候,我們一定要學會換位思考,假設自己不熟悉這塊代碼,從代碼閱讀者的角度去考量命名是否足夠直觀。
        2. 利用上下文簡化命名
        我們先來看一個簡單的例子。
        public class User {private String userName;  private String userPassword;  private String userAvatarUrl;  //...}
        在 User 類這樣一個上下文中,我們沒有在成員變量的命名中重複添加 “user” 這樣一個前綴單詞,而是直接命名爲 name、password、avatarUrl。在使用這些屬性時候,我們能借助對象這樣一個上下文,表意也足夠明確。具體代碼如下所示:
        User user = new User();user.getName(); // 藉助 user 對象這個上下文
        除了類之外,函數參數也可以藉助函數這個上下文來簡化命名。關於這一點,我舉了下面這個例子,你一看就能明白,我就不多囉嗦了。
        public void uploadUserAvatarImageToAliyun(String userAvatarImageUri);// 利用上下文簡化爲:public void uploadUserAvatarImageToAliyun(String imageUri);
        3. 命名要可讀、可搜索
        首先,我們來看,什麼是命名可讀。先解釋一下,我這裏所說的 “可讀”,指的是不要用一些特別生僻、難發音的英文單詞來命名。
        我們再來講一下命名可搜索。我們在 IDE 中編寫代碼的時候,經常會用 “關鍵詞聯想” 的方法來自動補全和搜索。
        比如,鍵入某個對象 “.get”,希望 IDE 返回這個對象的所有 get 開頭的方法。
        再比如,通過在 IDE 搜索框中輸入 “Array”,搜索 JDK 中數組相關的類。所以,我們在命名的時候,最好能符合整個項目的命名習慣。
        大家都用 “selectXXX” 表示查詢,你就不要用 “queryXXX”;大家都用 “insertXXX” 表示插入一條數據,你就要不用 “addXXX”,統一規約是很重要的,能減少很多不必要的麻煩。
        4. 如何命名接口和抽象類?
        對於接口的命名,一般有兩種比較常見的方式。一種是加前綴 “I”,表示一個 Interface。比如 IUserService,對應的實現類命名爲 UserService。另一種是不加前綴,比如 UserService,對應的實現類加後綴 “Impl”,比如 UserServiceImpl。
        對於抽象類的命名,也有兩種方式,一種是帶上前綴 “Abstract”,比如 AbstractConfiguration;另一種是不帶前綴 “Abstract”。實際上,對於接口和抽象類,選擇哪種命名方式都是可以的,只要項目裏能夠統一就行。
        重點總結
        好了,今天的內容到此就講完了。我們來一塊總結回顧一下,你需要掌握的重點內容。
        關於命名
        命名的關鍵是能準確達意。對於不同作用域的命名,我們可以適當地選擇不同的長度。作用域小的變量(比如臨時變量),可以適當地選擇短一些的命名方式。除此之外,命名中也可以使用一些耳熟能詳的縮寫。
        我們可以藉助類的信息來簡化屬性、函數的命名,利用函數的信息來簡化函數參數的命名。
        命名要可讀、可搜索。不要使用生僻的、不好讀的英文單詞來命名。除此之外,命名要符合項目的統一規範,不要用些反直覺的命名。
        接口有兩種命名方式:一種是在接口中帶前綴 “I”;另一種是在接口的實現類中帶後綴 “Impl”。對於抽象類的命名,也有兩種方式,一種是帶上前綴 “Abstract”,一種是不帶前綴。這兩種命名方式都可以,關鍵是要在項目中統一。

        【關鍵詞:青島java培訓,java就業培訓,java行業薪資,java命名規則,皇家娱乐】
         st_bottom
        青島Java培訓,青島HTML5培訓,青島UI培訓,青島web開發培訓,青島IT培訓,java培訓,ui培訓,HTML5培訓,java就業培訓,專業ui設計,web開發培訓,IT培訓,思途教育,青島思途,皇家娱乐
        Copyright © 青島思途共享科技信息服務有限公司 魯ICP備14027489號-2

        魯公網安備 37021402000988號

        青島Java培訓,青島HTML5培訓,青島UI培訓,青島web開發培訓,青島IT培訓,java培訓,ui培訓,HTML5培訓,java就業培訓,專業ui設計,web開發培訓,IT培訓,思途教育,青島思途,皇家娱乐