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

我被噴了:這樣寫代碼是多此一舉?

開發 前端
如果你的記憶力很好,自己一個做項目的時候追求點效率倒也無所謂了。但要是和其他同學一起做項目、維護代碼,寫帶有魔法值的代碼無疑會讓他人難以理解,如果再不寫注釋,可能他們連殺了你的心都會有了。

[[396356]]

本文轉載自微信公眾號「程序員魚皮」,作者魚皮。轉載本文請聯系程序員魚皮公眾號。

大家好,我是魚皮,今天通過一件事情,分享寫代碼時的一個重要小技巧。

前段時間,我在編程導航項目中開源了一段代碼,實現的功能是,當用戶的操作失敗時,會在頁面上彈出一個錯誤框,并提示 “操作失敗”,代碼如下:

  1. // 錯誤提示 
  2. const ERROR_MESSAGE = "操作失敗"
  3.  
  4. // 刪除資源 
  5. const result = deleteResource();  
  6. if(!result) { 
  7.   alert(ERROR_MESSAGE); 

然而沒想到,有位同學直接留言說我這么寫代碼是多此一舉!為什么要單獨給 “操作失敗” 這個字符串定義一個常量呢?直接這么寫不就好了:

  1. // 刪除資源 
  2. const result = deleteResource();  
  3. if(!result) { 
  4.   alert("操作失敗"); 

似乎代碼變得更精簡了,但其實這是一個常見的編程誤區,魔法值 問題。

魔法值

什么是魔法值呢?聽起來有點像游戲的藍槽 MP 哈哈。

[[396357]]

其實,魔法值和 MP 一點關系都沒有!

魔法值指的是代碼中沒有任何定義,直接像魔法一樣憑空出現的值,可以是數字、字符串等,比如:

  1. // 輸出 
  2. console.log(1); 
  3. // 彈出警告框 
  4. alert("dog"); 

為什么要給這種值一個名號 “魔法值” 呢,因為它對代碼的影響非常惡劣!

魔法值的問題

首先,魔法值會嚴重影響代碼的 可讀性 和 可維護性。

像上面的魔法字符串看起來好像沒什么問題,但如果魔法值是數字,就必須通過閱讀其他代碼才能推斷出來,比如:

  1. if (a == 1) { 
  2.   alert("good"); 
  3. else if (a == 2) { 
  4.   alert("bad"); 
  5. else if (a == 3) { 
  6.   ... 

只憑這樣一段代碼,你能知道數字 1、2、3 分別是什么意思嗎?

有同學說了,我自己寫的代碼難道還會看不懂么?別急,過一個月你再來閱讀下這段代碼。

如果你的記憶力很好,自己一個做項目的時候追求點效率倒也無所謂了。但要是和其他同學一起做項目、維護代碼,寫帶有魔法值的代碼無疑會讓他人難以理解,如果再不寫注釋,可能他們連殺了你的心都會有了。

第二,魔法值還會影響開發的 效率和準確性。

還是拿開頭那段代碼為例,噴我的同學根本沒有把代碼文件完整讀完,其實在該文件中,我不止一次使用到了 ERROR_MESSAGE 這一常量:

  1. // 錯誤提示 
  2. const ERROR_MESSAGE = "操作失敗"
  3.  
  4. // 刪除資源 
  5. const result = deleteResource();  
  6. if(!result) { 
  7.   alert(ERROR_MESSAGE); 
  8. // 修改資源 
  9. const result = updateResource();  
  10. if(!result) { 
  11.   alert(ERROR_MESSAGE); 
  12.  
  13. ... 

如果像他說的一樣,不去定義常量,而是直接用魔法字符串,那么每次要彈出 “操作失敗” 時,我都要重復去打這幾個字,浪費時間的同時,還存在打錯字的風險。而如果使用預定義的常量,就能很輕松地利用開發工具提供的代碼提示和補全功能。

代碼補全

此外,魔法值還會影響代碼的 易修改性。

假如說同一個魔法字符串在代碼中多次出現,那當我要修改字符串文案時,就要人工一個個地去找到這個字符串進行修改,即使可以用開發工具提供的搜索和全局替換功能,但也要去檢查一遍,非常麻煩。

  1. alert("你操作失敗了"); 
  2. alert("你操作失敗了"); 
  3. alert("你操作失敗了"); 

而如果將字符串定義為常量,只用在定義處修改它的值即可。此時的常量名,倒像是魔法值的一個指針了。

  1. const ERROR_MESSAGE = "你操作失敗了" 
  2. alert("ERROR_MESSAGE"); 
  3. alert("ERROR_MESSAGE"); 
  4. alert("ERROR_MESSAGE"); 

解決魔法值

正因為魔法值對代碼有很大的危害,所以各種代碼規范中,都建議開發者不要使用魔法值。

解決魔法值的方式很簡單,其實上面已經講到了,就是為一系列相同的值定義一個 常量。注意是常量,不是變量!因為魔法值的內容一般是固定的,其本身結構不會被修改。

對于一系列的魔法值,建議定義為一個枚舉或單獨的常量類,比如資源有很多審核狀態,可以把所有狀態集中定義。

JavaScript 代碼:

  1. const REVIEW_STATUS = { 
  2.   // 待審核 
  3.   WAITING: 0, 
  4.   // 通過 
  5.   PASS: 1, 
  6.   // 拒絕 
  7.   REJECT: 2 

Java 代碼:

  1. public enum ReviewStatus { 
  2.   WAITING, PASS, REJECT 

 

希望本期分享對大家有幫助,千萬不要再寫爛代碼啦!

 

責任編輯:武曉燕 來源: 程序員魚皮
相關推薦

2015-07-03 11:25:31

央視WiFi

2020-04-16 22:27:26

顯示器60Hz游戲

2009-08-19 16:14:17

.NET接口

2021-06-09 09:19:39

SSL證書數據安全公鑰

2020-09-24 10:59:45

區塊鏈央行數字貨幣

2020-09-16 06:51:37

Java線程JVM

2021-08-16 13:39:40

Windows 10Windows微軟

2009-03-02 16:52:59

SQL數據庫開發

2017-05-18 18:12:50

中小企業

2020-08-17 08:18:51

Java

2025-04-23 08:22:37

JavaKotlin類型

2021-03-17 16:53:51

IO多路

2009-11-08 22:34:30

2014-03-19 15:41:21

編程語言編程規則

2009-02-18 18:14:51

VMwareUbuntu系統

2024-12-26 07:41:47

Java類型ArrayList

2013-08-26 13:52:58

云服務云安全云取證

2021-01-12 15:58:03

云管理

2021-01-03 14:45:50

數字貨幣支付寶現金

2023-09-19 12:45:36

點贊
收藏

51CTO技術棧公眾號

jizz亚洲大全| 精品国免费一区二区三区| 日韩欧美中文一区| 韩国av网站在线| 一区二区在线电影| 国产黄色在线网站| 成人免费毛片片v| 国产精品美女黄网| 国产精品二区不卡| 96sao精品视频在线观看| 欧美激情亚洲| 日韩欧美中文在线| 免费在线观看的毛片| 一区二区高清| 国产精品最新在线观看| 白嫩亚洲一区二区三区| 俺也去精品视频在线观看| 日本不卡视频一二三区| 国产成人精品免费视频大全最热| 免费一区二区视频| 性欧美videosex高清少妇| 一二三中文字幕在线| 亚洲乱码日产精品bd| 最新中文字幕2018| 中文字幕中文字幕在线一区 | 国产不卡视频在线观看| 国产欧美123| 成人午夜视频在线| 国产二级片在线观看| 粉嫩av一区二区三区在线播放 | 亚洲国产日韩一区| 日本不卡网站| www.亚洲男人天堂| 136福利精品导航| 国产精品18久久久久久麻辣| 亚洲先锋影音| 亚洲精品国产精品久久| 99久久夜色精品国产网站| 色综合手机在线| 亚洲成人av电影| 最爽无遮挡行房视频在线| 精品一区二区三区电影| 成人永久在线| 国产伦精品免费视频| 1024日韩| 成人免费网站入口| 亚洲少妇屁股交4| 午夜激情在线观看| 色吧影院999| 在线观看欧美理论a影院| 国产精品传媒毛片三区| 国产精品资源在线观看| 女人裸体免费网站| 精品欧美一区二区三区精品久久 | 欧美日韩国产高清一区二区三区| 久热国产在线| 裸体女人亚洲精品一区| 91精品在线观看国产| 亚洲精品国产一区| 亚洲色图欧美激情| 欧美videosex性极品hd| 久久久久久com| 亚洲国产一区二区三区a毛片 | 在线播放你懂的| 亚洲精品成人久久| 国产日产精品_国产精品毛片| 欧美精品亚洲精品| 国产欧美日韩不卡| 麻豆视频在线观看免费网站| 麻豆国产va免费精品高清在线| 欧美片第1页综合| 国产一级爱c视频| 日本韩国一区二区三区| 中文成人激情娱乐网| 久久国产精品一区二区三区四区| 久久精品亚洲一区二区三区浴池| 色欧美激情视频在线| 久久久免费电影| 丝袜亚洲另类丝袜在线| 视频在线国产| 最好看的2019年中文视频 | 成人免费福利片| 国产理论电影在线观看| 久久久久免费视频| 久久精品国产成人一区二区三区 | 亚洲欧洲二区| 美女被啪啪一区二区| 自拍偷拍亚洲综合| 亚洲综合电影| 九九九九精品| 亚洲18色成人| 老牛精品亚洲成av人片| xxxx18hd亚洲hd捆绑| 日韩欧美色综合网站| 欧美电影免费观看高清| 一级片视频免费观看| 亚洲日韩中文字幕在线播放| 久久国产精品久久w女人spa| 亚洲成人影院在线观看| 国产最新精品视频| 99在线精品一区二区三区| 日本动漫理论片在线观看网站| 91欧美视频网站| 最近日韩中文字幕| 久久精品国产福利| 最新国产精品久久| 欧美一级xxx| 亚洲黄色成人| 欧美视频免费一区二区三区| 日本人成精品视频在线| 国产嫩草影院久久久久| 国产麻豆一区二区三区| 男人天堂1024| 精品久久久91| 91在线一区二区三区| 福利一区和二区| 天天想你在线观看完整版电影免费| 日韩午夜激情视频| 裸体一区二区| 激情网站在线| 一区二区三区我不卡| 精品久久久久久久人人人人传媒| 美女视频一区免费观看| 在线观看三级视频| 西游记1978| 亚洲欧美日韩国产精品| 国产suv精品一区二区三区| 在线成人视屏| 国产91在线视频观看| 欧美成人黄色小视频| 国产日韩欧美a| 国产精品视屏| 色琪琪免费视频网站| 亚洲自拍偷拍色片视频| 欧美日韩久久久| 日韩国产高清在线| 三级在线看中文字幕完整版| 99色这里只有精品| 久久视频这里只有精品| 久久久美女艺术照精彩视频福利播放| 97精品资源在线观看| 久久婷五月综合| 国产精品日韩欧美综合| 欧美性生活大片视频| 日韩**一区毛片| 亚洲aⅴ网站| 免费av高清| 国产精品免费在线| 精品福利av导航| 国产成人亚洲精品青草天美 | 两个人的视频www国产精品| 国产精品传媒入口麻豆| 久久久久av| 69av成人| 免费黄色特级片| 国产精品青青在线观看爽香蕉| 在线视频一区二区免费| 免费久久精品视频| 99er精品视频| 亚洲精品第一国产综合野草社区| 亚洲精品日韩av| 欧美videos大乳护士334| 2022国产精品视频| 欧美电影《睫毛膏》| 日本孕妇大胆孕交无码| 精品国产乱码久久久久久果冻传媒| 国产成人精品午夜| 精品久久久久久久大神国产| 伊人久久成人| 欧美精品日日操| 国产区二区三区| 91夜夜未满十八勿入爽爽影院| 777精品伊人久久久久大香线蕉| 精品午夜一区二区三区在线观看| 日韩精品成人在线观看| 精品视频二区| 免费拍拍拍网站| 国产精品丝袜一区二区三区| 精品精品国产高清a毛片牛牛 | 青青草97国产精品免费观看无弹窗版 | 最新av番号| 日本亚洲欧洲精品| 久久国产精品久久久久久| 欧美色xxxx| 9久草视频在线视频精品| 欧美成人国产| av日韩一区| av资源网在线观看| 免费在线观看毛片网站| 精品不卡在线| 久久久这里只有精品视频| 91精品国产综合久久精品性色| 久久精品水蜜桃av综合天堂| 日韩一区二区久久| 国产suv精品一区二区四区视频| 福利在线视频网站| 欧美精品aaaa| 杨幂一区欧美专区| 91在线播放国产| 久久久综合av|