国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

你真的會給變量命名嗎?

開發 前端
有讀者看到標題就開始敲鍵盤了,這還需要寫個文章來水?命名不就是不能用 abc、123 這種,名字要有意義嘛,這有啥好講的?

[[429099]]

有讀者看到標題就開始敲鍵盤了,這還需要寫個文章來水?命名不就是不能用 abc、123 這種,名字要有意義嘛,這有啥好講的?

但現實中,雖然懂得名字要有意義,很多程序員依然無法逃離命名沼澤。

萬金油命名法

什么叫精準?

看段代碼:

看上去不是挺正常嗎?有何不可?

那我問你,這段代碼在干嘛?你就得全神貫注去閱讀代碼細節了。已閱后,你說這段代碼不就是把一個章節的翻譯狀態改成翻譯中。

為何你得閱完這段代碼細節,才知道該方法在干嘛?

問題就在方法名 - processChapter,該方法是在處理章節沒錯,但這名太寬泛。如果說“將章節的翻譯狀態改成翻譯中”就叫處理章節,那么請問:

  • 將章節的翻譯狀態改成翻譯完畢
  • 修改章節內容

是不是也能叫處理章節呢?

所以,這的確是個過于寬泛的方法名,沒有大錯,但不精確!

乍一看,這名字有含義,但實際卻不能有效反映這段代碼的具體含義。

若做的是個信息處理系統,你根本無法判斷,這是個博客平臺還是個圖書管理系統呢?

從溝通角度看,這就不是一個有效信息表達。想理解它,需要消耗大量時間精力。

命名過于寬泛,不能精確描述,這是很多代碼命名現狀,也是讓祖傳代碼難以理解的根因。

回想這些命名:data、info、flag、process、handle、build、maintain、manage、modify......

這些都屬于 過于寬泛的命名,當這些名字出現在你的代碼,可以肯定作者當時也沒想好用啥名字,就開始隨便起個萬金油名字繼續coding了。

扯半天,那它不能叫處理章節,那該叫啥?

  • 命名要能精確描述該方法在做什么

這段代碼就是“將章節改為翻譯中”。那是不是該叫 changeChapterToTranlsating?相比處理章節,這個名字已經算進步了,但也不算是個好名字,因為它更多的是在描述這段代碼在做的細節。而封裝一段代碼成方法,就是因為我們不想知道過多細節。如果把細節平鋪開來,那就和直接讀代碼細節沒啥區別了。

  • 好名字應該描述意圖,而非細節

這段代碼為何要將翻譯狀態修改成翻譯中呢?一定是有所圖的。把翻譯狀態改成翻譯中,是因為我們在這里開啟了一個翻譯的過程。所以,這個方法應該叫 startTranslation

技術術語命名法

再看一段代碼:

這!也能有問題?我天天看到還寫這種代碼啊。

是的,我知道你們都在寫這種風格代碼,這就是另一個經典問題:技術術語命名法。

之所以叫 bookList,在于其聲明類型是 List。這種命名幾乎隨處可見,如 xxMap、xxSet。

這也是種不費腦命名法,但這種命名卻會帶來很多問題,因為是基于技術實現細節的命名方式。

我們都知道面向接口編程原則,就是不要面向實現編程,因為接口是穩定的,而實現易變不穩定。大多數人只覺得該原則是針對類型的,但命名方面,也同樣應該遵循。比如,我發現現在需要的是個不重復作品集合,即我得把這個變量的類型從 List 改成 Set。變量類型相信你一定會改,但變量名你會改嗎?還真不一定,一旦忘了,就會出現:一個 bookList 變量,居然是Set類型!

那怎么命名呢?得有個更能表達意圖的名字,這段代碼表達的就是拿到一堆書,所以可以叫 books。

這名字更簡單,也很表達意圖了。

追根究底,使用技術名詞,一般因為它缺少對應模型。

比如,在業務代碼里若直接出現 Redis:

通常來說,這里真正需要的是個緩存。Redis 只是緩存模型的一個具體實現:

但其實緩存這個概念也是個技術專業術語,也不應出現在業務代碼中。

做得好的是 Spring,使用 Spring 時,若需要緩存,一般是加個注解:

很多人愛用技術名詞去命名,大多因為:

  • 熟悉的語言
  • 寫代碼,很多都是參考別人代碼,優秀代碼都是一些開源技術項目。那在一個技術類項目中,這些技術術語其實也就是它的業務語言。但對于我們的業務類項目,就不能生搬硬套了

若該部分確實就是處理一些技術,使用技術術語無可厚非,但若是在處理業務,就要盡可能規避技術術語。

像xxMap這種命名,表示映射關系,如:書id與書的映射關系,難道也不能命名為bookIdMap?

Map 表示的是個數據結構,而映射關系推薦寫成 Mapping。

高級點的壞味道

前面的壞味道其實本質都是同一問題:對業務理解不到位。

編寫可維護的代碼要使用業務語言。那如何知道自己的命名是否用的是業務語言呢?

把這個詞講給PM聽,看他懂是啥不。

團隊里若每個人都根據自己理解命名,就可能出現百家爭鳴的命名,所以,一個良好的團隊實踐是建立團隊的業務詞匯表,統一業務命名。

當團隊對業務有了一致的理解后,興許還能發現更高級的壞味道:

看方法名,應該是確認章節內容審核通過。

但我有一問,chapterId 是審核章節的 ID,這沒問題,但 userId 是啥?了解背景后,才知道這里要 userId,是因為需要記錄審核人信息。

通過業務的分析,就發現,這個 userId 不是個好名字,因為它還需要更多解釋,更好的命名是 reviewerUserId,因為這用戶在當前場景下就是審核人(Reviewer)角色。

 

這也是一種萬金油命名法,但它不是那種一眼就能看出的壞味道,而是需要在業務層進行討論,所以,算個高級壞味道。

 

責任編輯:武曉燕 來源: JavaEdge
相關推薦

2016-06-01 15:42:58

Hadoop數據管理分布式

2020-04-17 14:25:22

Kubernetes應用程序軟件開發

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統數據庫

2025-08-06 08:53:35

2010-07-05 16:33:00

PHPPHP命名空間

2021-11-09 09:48:13

Logging python模塊

2021-01-15 07:44:21

SQL注入攻擊黑客

2022-08-15 10:42:50

千兆網絡千兆光纖

2021-04-23 07:27:31

內存分配CPU

2024-04-23 08:31:57

pythonfalse

2023-05-17 08:52:56

Java原子性可見性

2017-11-02 16:03:12

2012-10-24 10:16:17

IT工程師云計算網絡管理

2014-11-28 10:31:07

Hybrid APP

2020-02-27 10:49:26

HTTPS網絡協議TCP

2019-09-16 08:40:42

2019-05-13 14:17:06

抓包Web安全漏洞

2023-03-16 10:49:55

2022-09-22 13:56:56

線程Java
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区精品中文字幕| 136福利精品导航| 最新日韩在线视频| 亚洲精品自在在线观看| 日韩精品福利一区二区三区| 中文字幕国产亚洲| 51漫画成人app入口| 色视频成人在线观看免| 嫩草视频在线观看| 国产精品久久久久一区二区三区| 日韩一级性生活片| 国产精品白丝jk白祙喷水网站| 你懂的视频在线一区二区| 亚洲91中文字幕无线码三区| 国产精品视频99| 最近国产精品视频| 日本精品免费观看| 蜜臀91精品国产高清在线观看| 欧美激情伊人电影| 亚洲3区在线| 欧美激情视频给我| 成人搞黄视频| 午夜精品国产精品大乳美女| 日韩中文字幕一区二区高清99| 久久精品99久久久久久久久 | 91麻豆高清视频| 国产三区在线视频| 久久久久久麻豆| 国产又大又黄又猛| 亚洲欧美偷拍卡通变态| julia京香一区二区三区| 五月激情六月综合| 国产视频福利在线| 日韩丝袜情趣美女图片| 日本三级一区| 视频一区视频二区国产精品| 欧美激情三级| 欧美中文字幕在线观看| 超碰成人久久| 精品伦理一区二区三区| 奇米一区二区三区| 黄色一级在线视频| 中文字幕中文字幕一区二区| 污视频网站在线看| 欧美三级电影精品| 98色花堂精品视频在线观看| 日韩中文字幕视频在线观看| 成人自拍在线| 国产精品流白浆视频| 在线日本成人| 国产成人一二三区| 日韩一区中文字幕| 久草在线免费福利资源| 日韩精品视频在线免费观看| av在线亚洲色图| 91九色国产视频| 日韩高清欧美激情| 最新中文字幕免费视频| 欧美午夜www高清视频| av美女在线观看| 久久久久久久999精品视频| 99re久久最新地址获取| 亚洲欧洲国产日韩精品| 中文字幕在线一区免费| 久久77777| 欧美激情在线有限公司| 亚洲手机在线| 黄色大片中文字幕| 欧美日韩在线视频首页| 日韩电影免费观| 国产精品自拍小视频| 美女视频第一区二区三区免费观看网站| 国产真实老熟女无套内射| 亚洲一区二区视频在线| 天堂√中文最新版在线| 国产精品国产三级国产专播精品人| 久热精品视频| 九色中文视频| 亚洲欧美中文日韩v在线观看| 久久99视频| 欧美日韩视频免费在线观看| 一区二区三区中文字幕| 欧美私密网站| 成人女保姆的销魂服务| 大桥未久av一区二区三区中文| 青青视频在线观| 美女福利视频一区| 老司机亚洲精品| 濑亚美莉一二区在线视频 | 69久久夜色精品国产69| 日韩在线观看一区二区| av在线www| 国产亚洲一级高清| 香蕉久久网站| 韩国一区二区av| 日韩三级精品电影久久久| 黄色美女久久久| 99re6这里有精品热视频| 日本久久电影网| 亚洲黄页网站| 免费在线观看亚洲视频| 亚洲精品一区二区三区蜜桃下载 | 亚洲高清不卡| 免费福利影院| 久久久999精品视频| 首页欧美精品中文字幕| 一区二区三区视频国产日韩 | 成人做爰66片免费看网站| 国产亚洲美州欧州综合国| 暧暧视频在线免费观看| 91沈先生在线观看| 亚洲三级在线免费观看| 亚洲天堂网站| 激情五月六月婷婷| 亚洲成人精品在线| 综合久久综合| 香蕉av在线| 国产精品色婷婷视频| 国产精品美女一区二区三区 | 日韩精品中文字幕有码专区 | 国产三级三级三级精品8ⅰ区| 欧美aa在线| 奇米888一区二区三区| 黑人与娇小精品av专区| 成人免费看片39| 高清国语自产在线观看| 午夜精品一区二区三区av| 99精品热视频| 91成人小视频| 116极品美女午夜一级| xxxx欧美18另类的高清| 丰满岳乱妇一区二区三区| 成人日韩在线| 少妇高潮喷水在线观看| xx视频.9999.com| 91免费在线看| 麻豆精品在线| 男人操女人逼免费视频| 欧美国产日韩视频| 国产精品久久久久一区| 国产精品xxx在线观看| 污色网站在线观看| 97久久精品人搡人人玩| 最新不卡av在线| 成人aaaa| a黄色在线观看| 久久久综合亚洲91久久98| 日韩精品中文字幕在线一区| 三级在线观看一区二区| 午夜影院在线播放| 日韩精品综合在线| 久久久久久久久电影| 一区二区成人在线| 欧美婷婷在线| 97天天综合网| 国产精品999视频| 97精品视频在线| 色综合久久久网| 三级欧美在线一区| 国产一区二区三区朝在线观看| 已婚少妇美妙人妻系列| 琪琪第一精品导航| 色综合天天做天天爱| 日韩avvvv在线播放| 国产精品久久久久久久久免费高清| 日韩精品一区二区三区久久| 国产91|九色| 欧美日韩不卡一区二区| 国产成人啪免费观看软件| 日本午夜精品久久久| 在线播放麻豆| 高清在线观看免费| 91精品久久久久久久久久入口| 在线成人免费视频| 不卡影院免费观看| 精品久久久久久久| 成人性生交大片免费看网站 | 亚洲国产精品久久久久秋霞蜜臀| 国产传媒一区在线| 女人抽搐喷水高潮国产精品| 免费在线黄色网址| 日本a级片在线观看| 日韩av免费看网站| 欧美岛国在线观看| 国产精品传媒在线| 午夜在线一区二区| av自拍一区| www久久日com| 激情网站五月天| 精品日韩电影| 欧美精品18videos性欧美| 在线视频一区二区免费| 高清国产一区二区三区| 亚洲精品二区三区| 韩国女主播一区二区| 头脑特工队2免费完整版在线观看| 午夜一区二区三区| 国产精品99一区| 亚洲免费视频一区二区| 欧美午夜片欧美片在线观看|