為什么需要重視命名?好的命名即是注釋,別人一看到你的命名就知道你的變量、方法或者類是做什么的! 好的命名對于其他人(包括你自己)理解你的代碼有著很大的幫助! 簡單舉個例子說明一下命名的重要性。 《Clean Code》這本書明確指出:
常見命名規(guī)則以及適用場景這里只介紹 3 種最常見的命名規(guī)范。 駝峰命名法(CamelCase)駝峰命名法應該我們最常見的一個,這種命名方式使用大小寫混合的格式來區(qū)別各個單詞,并且單詞之間不使用空格隔開或者連接字符連接的命名方式 大駝峰命名法(CamelCase)類名需要使用大駝峰命名法(UpperCamelCase) 正例: ServiceDiscovery、ServiceInstance、LruCacheFactory
反例: serviceDiscovery、Serviceinstance、LRUCacheFactory
小駝峰命名法(lowerCamelCase)方法名、參數(shù)名、成員變量、局部變量需要使用小駝峰命名法(lowerCamelCase)。 正例: getUserInfo()、createCustomThreadPool()、setNameFormat(String nameFormat)
Uservice userService;
反例: GetUserInfo()、CreateCustomThreadPool()、setNameFormat(String NameFormat)
Uservice user_service
蛇形命名法(snake_case)測試方法名、常量、枚舉名稱需要使用蛇形命名法(snake_case) 在蛇形命名法中,各個單詞之間通過下劃線“_”連接,比如 蛇形命名法的優(yōu)勢是命名所需要的單詞比較多的時候,比如我把上面的命名通過小駝峰命名法給大家看一下:“shouldGet200StatusCodoWhenRequestIsValid”。感覺如何? 相比于使用蛇形命名法(snake_case)來說是不是不那么易讀?** 正例: @Test void should_get_200_status_code_when_request_is_valid() { ...... }
反例: @Test void shouldGet200StatusCodoWhenRequestIsValid() { ...... }
串式命名法(kebab-case)在串式命名法中,各個單詞之間通過下劃線“-”連接,比如 建議項目文件夾名稱使用串式命名法(kebab-case),比如 dubbo 項目的各個模塊的命名是下面這樣的。 常見命名規(guī)范Java 語言基本命名規(guī)范1.類名需要使用大駝峰命名法(UpperCamelCase)風格。方法名、參數(shù)名、成員變量、局部變量需要使用小駝峰命名法(lowerCamelCase)。 2.測試方法名、常量、枚舉名稱需要使用蛇形命名法(snake_case),比如 3.項目文件夾名稱使用串式命名法(kebab-case),比如 4.包名統(tǒng)一使用小寫,盡量使用單個名詞作為包名,各個單詞通過 "." 分隔符連接,并且各個單詞必須為單數(shù)。 正例: 反例: 5.抽象類命名使用 Abstract 開頭。 //為遠程傳輸部分抽象出來的一個抽象類(出處:Dubbo源碼) public abstract class AbstractClient extends AbstractEndpoint implements Client { }
6.異常類命名使用 Exception 結(jié)尾。 //自定義的 NoSuchMethodException(出處:Dubbo源碼) public class NoSuchMethodException extends RuntimeException { private static final long serialVersionUID = -2725364246023268766L; public NoSuchMethodException() { super(); } public NoSuchMethodException(String msg) { super(msg); } }
7.測試類命名以它要測試的類的名稱開始,以 Test 結(jié)尾。 //為 AnnotationUtils 類寫的測試類(出處:Dubbo源碼) public class AnnotationUtilsTest { ...... }
POJO 類中布爾類型的變量,都不要加 is 前綴,否則部分框架解析會引起序列化錯誤。 如果模塊、接口、類、方法使用了設(shè)計模式,在命名時需體現(xiàn)出具體模式。 命名易讀性規(guī)范1.為了能讓命名更加易懂和易讀,盡量不要縮寫/簡寫單詞,除非這些單詞已經(jīng)被公認可以被這樣縮寫/簡寫。比如 2.命名不像函數(shù)一樣要盡量追求短,可讀性強的名字優(yōu)先于簡短的名字,雖然可讀性強的名字會比較長一點。 這個對應我們上面說的第 1 點。 3.避免無意義的命名,你起的每一個名字都要能表明意思。 正例: 反例: 4.避免命名過長(50 個字符以內(nèi)最好),過長的命名難以閱讀并且丑陋。 5.不要使用拼音,更不要使用中文。 注意:像 alibaba 、wuhan、taobao 這種國際通用名詞可以當做英文來看待。 正例:discount 反例: Codelf:變量命名神器?這是一個由國人開發(fā)的網(wǎng)站,網(wǎng)上有很多人稱其為變量命名神器, Guide 在實際使用了幾天之后感覺沒那么好用。小伙伴們可以自行體驗一下,然后再給出自己的判斷。 Codelf 提供了在線網(wǎng)站版本,網(wǎng)址:https://unbug./codelf/,具體使用情況如下: 我選擇了 Java 編程語言,然后搜索了“序列化”這個關(guān)鍵詞,然后它就返回了很多關(guān)于序列化的命名。
并且,Codelf 還提供了 VS code 插件,看這個評價,看來大家還是很喜歡這款命名工具的。
總結(jié)如下圖所示,涵蓋上面所有重要內(nèi)容的思維導圖,便于小伙伴們?nèi)蘸蟛殚啞?/p>
其他推薦閱讀
|
|
|
來自: 新進小設(shè)計 > 《待分類》