日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我們一起聊聊如何簡化多個 if 的判斷結構

來源: 責編: 時間:2024-03-29 17:16:57 257觀看
導讀多少算太多?有些人認為數字就是一,你應該總是用至少一個三元運算符來代替任何單個 if 語句。我并不這樣認為,但我想強調一些擺脫常見的 if/else 意大利面條代碼的方法。我相信很多開發人員很容易陷入 if/else 陷阱,不是因

多少算太多?

有些人認為數字就是一,你應該總是用至少一個三元運算符來代替任何單個 if 語句。我并不這樣認為,但我想強調一些擺脫常見的 if/else 意大利面條代碼的方法。UK328資訊網——每日最新資訊28at.com

我相信很多開發人員很容易陷入 if/else 陷阱,不是因為其他解決方案的復雜性,而是因為它遵循這樣的自然語言模式:if 執行此操作, else 執行此操作。UK328資訊網——每日最新資訊28at.com

等等,什么是三元運算符?

三元運算符與 if/else 并沒有革命性的區別,因為它們都是條件操作,但三元運算符會返回一個值,因此可以直接用于賦值。UK328資訊網——每日最新資訊28at.com

const greaterThanFive = (8 > 5) ? 'yep' : 'nope';console.log(greaterThanFive); // 'yep'

基本模式只是一個條件,如果為真則返回一個值,如果為假則返回另一個值。UK328資訊網——每日最新資訊28at.com

(condition) ? isTruthy : isFalsy

IF/ELSE 的替代方案

讓我們從一個場景開始,逐步了解不同解決方案的示例。UK328資訊網——每日最新資訊28at.com

我們將從用戶輸入中獲取顏色,并需要將它們轉換為一些預設的顏色代碼來匹配,以便我們可以更改背景顏色。因此,我們將檢查顏色名稱字符串,并在匹配時設置顏色代碼。UK328資訊網——每日最新資訊28at.com

const setBackgroundColor = (colorName) => { let colorCode = ''; if(colorName === 'blue') {  colorCode = '#2196F3'; } else if(colorName === 'green') {  colorCode = '#4CAF50'; } else if(colorName === 'orange') {  colorCode = '#FF9800'; } else if(colorName === 'pink') {  colorCode = '#E91E63'; } else {  colorCode = '#F44336'; }; document.body.style.backgroundColor = colorCode;};

這個 if/else 就完成了工作。但是我們背負著大量重復邏輯比較 colorName 和重復賦值 colorCode。UK328資訊網——每日最新資訊28at.com

Switch  ?

現在我們可以更恰當地將其更改為 switch 語句。它更符合我們正在嘗試做的事情的概念;我們有幾種想要匹配的字符串情況,如果沒有一種情況匹配,則有一個默認值。UK328資訊網——每日最新資訊28at.com

const setBackgroundColor = (colorName) => { let colorCode = ''; switch(colorName) {  case 'blue':   colorCode = '#2196F3';   break;  case 'green':   colorCode = '#4CAF50';   break;  case 'orange':   colorCode = '#FF9800';   break;  case 'pink':   colorCode = '#E91E63';   break;  default:   colorCode = '#f44336'; }; document.body.style.backgroundColor = colorCode;};

但是 switch 仍然帶有大量我們可以不需要的樣板文件和重復代碼。UK328資訊網——每日最新資訊28at.com

Lookup Table  查找表

那么我們真正想要實現什么目標呢?我們需要將十六進制顏色代碼分配給顏色名稱,因此讓我們創建一個將顏色名稱作為鍵、將顏色代碼作為值的對象。然后我們可以使用 object[key] 通過顏色名稱查找顏色代碼。我們需要一個默認值,因此如果沒有找到鍵,則返回默認值的短三元運算符將在創建對象的默認部分時執行此操作。UK328資訊網——每日最新資訊28at.com

const colorCodes = { 'blue'   : '#2196F3', 'green'  : '#4CAF50', 'orange' : '#FF9800', 'pink'   : '#E91E63', 'default': '#F44336'};const setBackgroundColor = (colorName) => { document.body.style.backgroundColor = colorCodes[colorName]  ? colorCodes[colorName]  : colorCodes['default'];};

現在我們有了一個查找表,可以整齊地列出我們的輸入和可能的輸出。UK328資訊網——每日最新資訊28at.com

這并不是奇跡般地減少了“代碼行數”(LOC)(我們從 15 行減少到 20 行,再減少到 12 行)。事實上,其中一些解決方案可能會增加您的 LOC,但我們提高了可維護性、易讀性,并且實際上通過僅對默認回退進行一次邏輯檢查來降低復雜性。UK328資訊網——每日最新資訊28at.com

數據的交易邏輯

在 if/else 或 switch 上使用查找表的最重要成就是我們將比較邏輯的多個實例轉換為數據。代碼更具表現力;它將邏輯顯示為操作。代碼更具可測試性;邏輯被減少了。而且我們的比較更容易維護;它們被合并為純數據。UK328資訊網——每日最新資訊28at.com

讓我們將五個比較邏輯運算減少為一個,并將我們的值轉換為數據。UK328資訊網——每日最新資訊28at.com

場景:我們需要將成績百分比轉換為對應的字母成績。UK328資訊網——每日最新資訊28at.com

if/else 很簡單;我們從上到下檢查成績是否高于或等于匹配字母成績所需的成績。UK328資訊網——每日最新資訊28at.com

const getLetterGrade = (gradeAsPercent) => { if(gradeAsPercent >= 90) {  return "A"; } else if(gradeAsPercent >= 80) {  return "B"; } else if(gradeAsPercent >= 70) {  return "C"; } else if(gradeAsPercent >= 60) {  return "D"; } else {  return "F" };};

但我們一遍又一遍地重復相同的邏輯運算。UK328資訊網——每日最新資訊28at.com

因此,讓我們將數據提取到一個數組中(以保留順序)并將每個等級的可能性表示為一個對象。現在我們只需對對象進行一次 >= 比較,并找到數組中第一個匹配的對象。UK328資訊網——每日最新資訊28at.com

const gradeChart = [ {minpercent: 90, letter: 'A'}, {minpercent: 80, letter: 'B'}, {minpercent: 70, letter: 'C'}, {minpercent: 60, letter: 'D'}, {minpercent: 0,  letter: 'F'}];const getLetterGrade = (gradeAsPercent) => { const grade = gradeChart.find(  (grade) => gradeAsPercent >= grade.minpercent ); return grade.letter;};

開始將您的比較想象為數據

當你需要比較或“檢查”數值時,很自然地會想到 if/else,這樣你就可以用語言逐步解決問題。但下一次,請試著思考如何將您的值表示為數據,并通過簡化邏輯來解釋這些數據。UK328資訊網——每日最新資訊28at.com

您的代碼最終將變得更具可讀性、可維護性和目的性,并且其所代表的概念清晰分離。UK328資訊網——每日最新資訊28at.com


原文:https://dreith.com/blog/theres-such-a-thing-as-using-too-many-ifs/UK328資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-80517-0.html我們一起聊聊如何簡化多個 if 的判斷結構

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入理解Java虛擬機:堆詳解

下一篇: []byte與string的兩種轉換方式和底層實現

標簽:
  • 熱門焦點
  • 容量越大越不壞?24萬塊硬盤故障率報告公布 這些產品零故障

    8月5日消息,云存儲服務商Backblaze發布了最新的硬盤故障率報告,年故障率有所上升。Backblaze發布的硬盤季度統計數據,其中包括故障率等重要方面。這些結
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 這款新興工具平臺,讓你的電腦效率翻倍

    隨著信息技術的發展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個瓶頸。于是各種工具應運而生,都在爭相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 雅柏威士忌多款單品價格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業觀察編 | 肖海林今年以來,威士忌市場開始出現了降溫跡象,越來越多不斷暴漲的網紅威士忌也開始悄然回歸市場理性。近日,LVMH集團旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 華為將推出盤古數字人大模型 可幫助用戶12小時完成數字人生成

    在今日舉行的2023年華為云數字文娛AI創新峰會上,華為云全球Marketing與銷售服務總裁石冀琳表示,華為云將在后續推出盤古數字人大模型,可幫助用戶12小
  • 三星電子Q2營收60萬億韓元 存儲業務營收同比仍下滑超過50%

    7月27日消息,據外媒報道,從三星電子所發布的財報來看,他們主要利潤來源的存儲芯片業務在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設備解決方案
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产老女人精品毛片久久| 亚洲激情综合| 国产精品美女久久久免费| 欧美视频在线观看免费网址| 国产精品青草综合久久久久99| 国产精品每日更新| 精品福利电影| 亚洲精品综合精品自拍| 午夜精品免费视频| 免费在线观看日韩欧美| 欧美韩日一区| 国产一区视频网站| 99国产精品自拍| 久久国产99| 欧美日韩高清一区| 国内精品久久久久久久影视麻豆 | 欧美a级片网站| 国产精品久久久久影院亚瑟| 一本色道久久精品| 欧美激情一二三区| 亚洲图片在区色| 国产欧美日韩一区| 久久精品国产一区二区三| 国产午夜精品麻豆| 久久综合影视| 亚洲欧洲日韩在线| 欧美aⅴ一区二区三区视频| 欧美视频久久| 亚洲国产三级网| 久久久久久久综合| 欧美四级伦理在线| 亚洲国产精品福利| 亚洲欧美日韩另类| 欧美日韩精品系列| 99re国产精品| 久久手机免费观看| 欧美日韩四区| 激情五月***国产精品| 亚洲视频中文| 狼人社综合社区| 欧美日韩亚洲一区二区| 欧美国产精品人人做人人爱| 一区二区三区毛片| 亚洲欧美激情精品一区二区| 欧美日韩在线播放一区| 欧美伊人久久大香线蕉综合69| 久久久久久久久久久成人| 久热精品视频在线观看一区| 国产美女一区| 亚洲午夜久久久| 欧美日韩精品久久久| 亚洲伦理久久| 欧美在线视频a| 亚洲女优在线| 久久久亚洲成人| 欧美久久视频| 日韩香蕉视频| 欧美极品欧美精品欧美视频| 欧美日韩三级一区二区| 国产日韩在线一区| 91久久久久| 亚洲一区二区三区在线视频| 亚洲视频电影在线| 欧美激情亚洲精品| 国产精品每日更新| 在线国产日韩| 日韩一区二区免费看| 亚洲午夜激情| 欧美日韩精品一区视频| 亚洲精品一二三| 国产日韩欧美亚洲| 欧美激情精品久久久久久蜜臀 | 国产三区精品| 久久久蜜桃一区二区人| 99精品国产一区二区青青牛奶| 国产欧美一区二区三区另类精品 | 9国产精品视频| 国产日产欧产精品推荐色| 能在线观看的日韩av| 香蕉久久夜色精品国产| 亚洲美女性视频| 一区二区在线视频| 国产精品网站在线| 欧美日韩一视频区二区| 欧美jizz19性欧美| 久久久女女女女999久久| 亚洲欧美色婷婷| 艳女tv在线观看国产一区| 亚洲国产精品va在线看黑人 | 亚洲综合国产精品| 亚洲免费高清| 亚洲经典一区| 亚洲激情欧美| 亚洲激情成人网| 亚洲国内在线| 亚洲福利av| 精品盗摄一区二区三区| 母乳一区在线观看| 欧美在线播放| 欧美资源在线| 久久久久国产精品人| 久久久99久久精品女同性| 久久精品国产2020观看福利| 午夜影院日韩| 久久久久亚洲综合| 模特精品裸拍一区| 欧美日本视频在线| 欧美亚州韩日在线看免费版国语版| 欧美日韩亚洲高清一区二区| 欧美三级小说| 国产精品无人区| 国产日本欧美一区二区三区在线 | 欧美日本网站| 国产精品三级久久久久久电影| 国产精品一区二区久久精品| 国产一区二区三区久久久久久久久| 韩日欧美一区二区| 亚洲福利视频网| 99re6这里只有精品视频在线观看| 国产精品99久久99久久久二8| 亚洲欧美日韩国产成人| 久久三级视频| 欧美日韩一区在线播放| 国产午夜精品在线| 亚洲美女性视频| 欧美一区二区三区视频| 狂野欧美激情性xxxx欧美| 欧美日韩亚洲国产精品| 激情文学一区| 中文国产一区| 久久综合999| 国产精品人成在线观看免费| 一区在线免费| 亚洲欧美国产制服动漫| 欧美mv日韩mv亚洲| 国产精品欧美精品| 亚洲精品一区二区三区蜜桃久| 香蕉尹人综合在线观看| 欧美日本一区二区视频在线观看| 国产区二精品视| 99精品国产在热久久下载| 久久黄色级2电影| 欧美视频一区二区三区在线观看| 激情懂色av一区av二区av| 午夜精品久久久久久99热| 欧美美女视频| 亚洲日本va午夜在线影院| 久久久久久亚洲精品中文字幕| 国产精品三上| 亚洲先锋成人| 欧美亚州韩日在线看免费版国语版| 亚洲国产欧美一区二区三区久久| 午夜精品婷婷| 国产精品久久久久久久第一福利| 亚洲精品久久久久久久久| 久久综合久久久| 黄色成人片子| 久久一区二区三区四区| 韩国成人精品a∨在线观看| 在线国产亚洲欧美| 久久精品一区蜜桃臀影院| 国产欧美日韩亚洲| 久久综合成人精品亚洲另类欧美| 91久久黄色| 国产精品电影在线观看| 久久蜜臀精品av| 一区二区三区久久网| 国内精品一区二区| 欧美人妖在线观看| 午夜国产不卡在线观看视频| 1769国内精品视频在线播放| 国产精品va在线播放| 久久女同互慰一区二区三区| 亚洲毛片播放| 国产欧美日韩麻豆91| 欧美激情中文字幕在线| 一区二区日韩欧美| 性娇小13――14欧美| 欧美精品日韩精品| 宅男精品导航| 国内成人自拍视频| 欧美精品偷拍| 一区二区三区国产盗摄| 欧美新色视频| 欧美一区二区精美| 在线观看91精品国产入口| 国产精品黄视频| 久久一区激情| 亚洲天堂av图片| 亚洲高清视频一区| 国产精品超碰97尤物18| 久久精品亚洲一区| 在线视频精品| 一区在线播放| 欧美日韩高清在线一区| 亚洲视频999| 国产日韩精品一区二区三区在线 | 在线日韩欧美视频| 欧美精品一卡二卡| 亚洲综合国产激情另类一区| 欧美日韩在线电影| 国产一区二区成人| 国产精品99久久久久久有的能看 | 欧美成人精品1314www|