精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

提升代碼可讀性,減少 if-else 的幾個小技巧

開發 前端
本文主要是向大家傳遞一種思想,我們有很多的方法去優化我們的代碼,提高我們代碼的可讀性。對if else并沒有歧視的意思,只是希望在大家以后的代碼中不僅僅只有if else。

前言

相信大家或多或少都接觸過擁有龐大 if else 的項目代碼吧,多重嵌套的 if else 在維護的時候真的讓人很惱火,有時候一個 bug 排查下來,嚴重感覺身體被掏空。

本文并未有消滅或歧視 if else的意思,if else 的好用都知道,這里只是在某些特定場景為大家額外提供一種思路,增加我們代碼的可讀性??。

短路運算

Javascript 的邏輯或 || 的短路運算有時候可以用來代替一些比較簡單的 if else

邏輯或|| 的短路運算:若左邊能轉成true,返回左邊式子的值,反之返回右邊式子的值。

下面用一個簡單的案例來表述

let c
if(a){
c = a
} else {
c = b
}

大家看著上面的代碼會難受嘛(本人有一丟丟的強迫癥??),明明就是一個很簡單的判斷卻需要寫好幾行代碼才能實現。這個時候我們就可以用短路運算去簡化我們的代碼啦??。

let c = a || b

這樣看起來是不是就簡潔了很多??。

三元運算符

三元運算符我覺得大家應該都很熟悉吧,很多時候簡單的一些判斷我們都可以使用三元運算符去替代 if else,這里只推薦 一層 三元運算符,因為多層嵌套的三元運算符也不具備良好的可讀性??。

例子:條件為 true 時返回1,反之返回0:

const fn = (nBoolean) {
if (nBoolean) {
return 1
} else {
return 0
}

}

// 使用三元運算符
const fn = (nBoolean) {
return nBoolean ? 1 : 0
}

三元運算符使用的地方也比較多,比如:條件賦值,遞歸...

// num值在nBoolean為true時為10,否則為5
let num = nBoolean ? 10 : 5

// 求0-n之間的整數的和
let sum = 0;
function add(n){
sum += n
return n >= 2 ? add(n - 1) : result;
};
let num = add(10);//55

switch case

上述的兩種方式:短路運算跟三元運算雖然很好用,代碼也很簡潔,不過都只能用于簡單的判斷,遇到多重條件判斷就不能使用了??。

對于 switch case,雖然它的可讀性確實比 else if 更高,但是我想大家應該都覺得它寫起來比較麻煩吧??(反正我覺得很麻煩??)。

例:有A、B、C、D四種種類型,在A、B的時候輸出1,C輸出2、D輸出3,默認輸出0。

let type = 'A'

//if else if
if (type === 'A' || type === 'B') {
console.log(1);
} else if (type === 'C') {
console.log(2);
} else if(type === 'D') {
console.log(3);
} else {
console.log(0)
}

//switch case
switch (type) {
case 'A':
case 'B':
console.log(1)
break
case 'C':
console.log(2)
break
case 'D':
console.log(3);
break;
default:
console.log(0)
}

對象配置/策略模式

對象配置看起來跟 策略模式 差不多,都是根據不同得參數使用不同得數據/算法/函數。

策略模式就是將一系列算法封裝起來,并使它們相互之間可以替換。被封裝起來的算法具有獨立性,外部不可改變其特性。

接下來我們用對象配置的方法實現一下上述的例子

let type = 'A'

let tactics = {
'A': 1,
'B': 1,
'C': 2,
'D': 3,
default: 0
}
console.log(tactics[type]) // 1

接下來用幾個例子讓大家更加熟悉一點。

案例1 商場促銷價

根據不同的用戶使用不同的折扣,如:普通用戶不打折,普通會員用戶9折,年費會員8.5折,超級會員8折。

使用if else實現

// 獲取折扣 --- 使用if else
const getDiscount = (userKey) => {
if (userKey === '普通會員') {
return 0.9
} else if (userKey === '年費會員') {
return 0.85
} else if (userKey === '超級會員') {
return 0.8
} else {
return 1
}
}
console.log(getDiscount('普通會員')) // 0.9

使用對象配置/策略模式實現

// 獲取折扣 -- 使用對象配置/策略模式
const getDiscount = (userKey) => {
// 我們可以根據用戶類型來生成我們的折扣對象
let discounts = {
'普通會員': 0.9,
'年費會員': 0.85,
'超級會員': 0.8,
'default': 1
}
return discounts[userKey] || discounts['default']
}
console.log(getDiscount('普通會員')) // 0.9

從上面的案列中可以明顯看得出來,使用對象配置比使用if else可讀性更高,后續如果需要添加用戶折扣也只需要修改折扣對象就行??。

對象配置不一定非要使用對象去管理我們鍵值對,還可以使用 Map去管理??,如:

// 獲取折扣 -- 使用對象配置/策略模式
const getDiscount = (userKey) => {
// 我們可以根據用戶類型來生成我們的折扣對象
let discounts = new Map([
['普通會員', 0.9],
['年費會員', 0.85],
['超級會員', 0.8],
['default', 1]
])
return discounts.get(userKey) || discounts.get('default')
}
console.log(getDiscount('普通會員')) // 0.9

案例2 年終獎

公司的年終獎根據員工的工資基數和績效等級來發放的。例如,績效為A的人年終獎有4倍工資,績效為B的有3倍,績效為C的只有2倍。

假如財務部要求我們提供一段代碼來實現這個核算邏輯,我們要怎么實現呢?

這不是很簡單嘛,一個函數就搞定了。

const calculateBonus = (performanceLevel, salary) => { 
if (performanceLevel === 'A'){
return salary * 4
}
if (performanceLevel === 'B'){
return salary * 3
}
if (performanceLevel === 'C'){
return salary * 2
}
}
calculateBonus( 'B', 20000 ) // 輸出:60000

可以發現,這段代碼十分簡單,但是 calculateBonus函數比較龐大,所有的邏輯分支都包含在if else語句中,如果增加了一種新的績效等級D,或者把A等級的倍數改成5,那我們必須閱讀所有代碼才能去做修改???♂?。

所以我們可以用對象配置/策略模式去簡化這個函數??

let strategies = new Map([
['A', 4],
['B', 3],
['C', 2]
])
const calculateBonus = (performanceLevel, salary) => {
return strategies.get(performanceLevel) * salary
}
calculateBonus( 'B', 20000 ) // 輸出:60000

至此,這個需求做完了,然后產品經理說要加上一個部門區分,假設公司有兩個部門D和F,D部門的業績較好,所以年終獎翻1.2倍??,F部門的業績較差,年終獎打9折??。

改造以上代碼,把狀態值拼接,然后存入Map中

// 以績效_部門的方式拼接鍵值存入
let strategies = new Map([
['A_D', 4 * 1.2],
['B_D', 3 * 1.2],
['C_D', 2 * 1.2],
['A_F', 4 * 0.9],
['B_F', 3 * 0.9],
['C_F', 2 * 0.9]
])
const calculateBonus = (performanceLevel, salary, department) => {
return strategies.get(`${performanceLevel}_${department}`) * salary
}
calculateBonus( 'B', 20000, 'D' ) // 輸出:72000

結尾

本文主要是向大家傳遞一種思想,我們有很多的方法去優化我們的代碼,提高我們代碼的可讀性。

對if else并沒有歧視的意思,只是希望在大家以后的代碼中不僅僅只有if else??。

責任編輯:武曉燕 來源: 前端YUE
相關推薦

2017-10-30 15:22:29

代碼可讀性技巧

2024-04-07 10:13:57

C++代碼if-else

2021-10-09 10:24:53

Java 代碼可讀性

2020-11-08 14:36:27

pandas數據分析pipe()

2022-08-23 14:57:43

Python技巧函數

2022-08-29 00:37:53

Python技巧代碼

2024-01-31 08:04:43

PygmentsPython

2024-10-07 10:00:00

Python代碼編碼

2021-04-01 16:43:05

代碼可讀性開發

2023-11-14 08:10:06

高級函數Python

2019-06-06 08:48:14

代碼函數編程語言

2015-08-27 13:11:18

JavaScript代碼

2025-03-17 00:55:00

2025-05-12 10:00:00

JavaScript代碼編碼

2024-04-23 08:01:20

面向對象C 語言代碼

2025-07-29 09:01:35

if-else代碼

2021-12-08 23:38:25

Python工具代碼

2024-08-02 16:20:06

2010-09-02 10:43:24

CSS文件

2019-12-03 09:32:32

JavaScript代碼開發
點贊
收藏

51CTO技術棧公眾號

欧美一区二区国产| 一级黄色片在线看| 国产 欧美 精品| 日韩精品导航| 国产成人一级电影| 国产丝袜精品第一页| 桥本有菜av在线| 免费在线观看黄色小视频| 国产精品电影| 欧美视频免费| 懂色av中文一区二区三区天美| 国产欧美日韩精品专区| 国产三级精品三级在线| 青青九九免费视频在线| 欧美日一区二区在线观看 | 久久精品国产精品亚洲综合| 亚洲精品国产精品自产a区红杏吧| 男女h黄动漫啪啪无遮挡软件| 亚洲欧美黄色片| 免费成人在线网站| 国产小视频国产精品| 18岁网站在线观看| 少妇人妻精品一区二区三区| 欧美国产高潮xxxx1819| 欧美一区二区视频在线观看2022| 国产乱子伦农村叉叉叉| 91麻豆一二三四在线| 美女任你摸久久| 欧美一二三视频| 亚洲欧美色图视频| 欲香欲色天天天综合和网| av网站免费线看精品| 隔壁老王国产在线精品| 中文字幕人妻一区二区三区| h片在线观看视频免费| 粉嫩久久99精品久久久久久夜| 丝袜亚洲另类欧美重口| 鲁一鲁一鲁一鲁一av| 1024国产在线| 久久精品免费观看| 国产www精品| 手机av在线不卡| 亚洲精品69| 中文字幕欧美一| 亚洲va码欧洲m码| 青草草在线视频| 成人知道污网站| 欧美日韩一区二区三区在线免费观看 | 无码人妻久久一区二区三区 | 成人看片网页| 国产精品丝袜久久久久久app| 国产mv免费观看入口亚洲| 精品国产aaa| 99久久久成人国产精品| 亚洲在线一区二区三区| 精品日本一区二区| 五月婷婷激情五月| 欧美一区免费| 久久综合久中文字幕青草| 国产成人精品综合久久久久99| 欧美xxxbbb| 久久精品一区二区三区不卡牛牛| 国产精品久久久久秋霞鲁丝| 国产探花在线播放| 欧美成人一区二免费视频软件| 欧美成人精品在线观看| 美国黄色a级片| 久久不见久久见免费视频7| 在线电影院国产精品| 99在线免费视频观看| 欧美色18zzzzxxxxx| 国产一区二区女| 欧洲亚洲在线视频| 久久高清内射无套| 亚洲美女15p| 日韩欧美123| 美女喷白浆视频| 在线观看av免费| 亚洲一级电影视频| 国产精品美女在线播放| av网址在线| 午夜成人免费电影| 三级网在线观看| 男女视频在线| 色哟哟亚洲精品| av无码久久久久久不卡网站| www.超碰在线| 欧美色图第一页| aa在线免费观看| 肉体视频在线| 日韩美女精品在线| 黄色成人在线看| www视频在线看| 国产精品免费人成网站| 免费电影一区| 天堂在线观看免费视频| 国产日韩欧美综合一区| 精品在线视频一区二区| av福利精品| 亚洲影院理伦片| 欧美性猛交xxx乱久交| 欧美视频精品全部免费观看| 欧美日韩高清在线播放| 老头吃奶性行交视频| 中文字幕在线视频久| 欧美日韩黄色影视| 成人性生活免费看| 久久久9色精品国产一区二区三区| 国产亚洲美女久久| 久久香蕉精品视频| 国产一区激情| 久久久久亚洲精品国产| 最近中文在线观看| 蜜臀a∨国产成人精品| 国产精品久久亚洲| 熟妇人妻系列aⅴ无码专区友真希| 国产色产综合色产在线视频| 日韩一区二区高清视频| 日本大胆在线观看| 欧美日韩久久久久久| 天天插天天射天天干| 亚洲成人一品| 欧美黑人性猛交| 久久久全国免费视频| 青青草97国产精品免费观看无弹窗版| 国产98色在线| 天天射,天天干| 一区二区在线观看视频 | 性xxxxxxxxx| 精品国产一区二区三区2021| 亚洲男人天堂九九视频| 午夜精产品一区二区在线观看的| 久久93精品国产91久久综合| 久久久久一本一区二区青青蜜月| 97人妻精品一区二区三区| 久久一二三四| 国产精品劲爆视频| 国产精品久久久久久在线| 久久色.com| 一区二区免费电影| 18加网站在线| 欧美视频一区二区| 精品亚洲视频在线| 青青草国产免费一区二区下载 | 国产精品99久久久久久董美香| 在线欧美一区二区| 色呦色呦色精品| 亚洲不卡在线| 亚洲男人天堂久| 六月丁香激情综合| 美国一区二区三区在线播放 | 欧美黄色大片网站| 91精品视频在线播放| 亚洲美女性生活| 一区二区三区国产精品| 不许穿内裤随时挨c调教h苏绵| 欧美在线免费| 成人区精品一区二区| 你懂的在线看| 91国偷自产一区二区使用方法| 一级黄色大片儿| 亚洲综合图色| 国产精品va在线| 欧美激情办公室videoshd| 亚洲成人免费在线| 五月婷婷之婷婷| 亚洲电影影音先锋| 国产经典一区二区三区| 毛片电影在线| 欧美另类久久久品| 精品爆乳一区二区三区无码av| 日韩国产欧美三级| 国产高清精品一区| 三级在线看中文字幕完整版| 亚洲欧美日韩视频一区| 一级特黄录像免费看| 有码一区二区三区| 青青草视频成人| 在线免费高清一区二区三区| 国产精品爽爽ⅴa在线观看| 黄色网址免费在线观看| 91黄色激情网站| 四虎884aa成人精品| 成人午夜视频福利| 欧美a级黄色大片| 精品素人av| 欧美精品第一页在线播放| 国产又粗又猛视频免费| 亚洲女女做受ⅹxx高潮| 黄色免费网址大全| 欧美激情四色| 欧美日产一区二区三区在线观看| 欧美日韩色网| 精品亚洲夜色av98在线观看| 中文字幕乱码视频| 国产女主播在线一区二区| 成人一级片网站| 久久国产精品色av免费看| 国产精品成熟老女人| 尤物视频在线看| 一区二区欧美激情| 中国黄色一级视频| 亚洲国产一二三| 亚洲女人久久久| 久久青草国产手机看片福利盒子| 国产农村妇女精品久久| 丝袜亚洲另类丝袜在线| 青草网在线观看| 日本久久黄色| 久久精品日产第一区二区三区精品版 | 日本大胆人体视频| 91麻豆精品国产综合久久久| 91a在线视频| 男男激情在线| 精品剧情在线观看| 国产精品成人国产乱| 成人性视频网站| 亚洲一区日韩精品| 午夜一区不卡| 久久人人九九| 日韩精品成人在线观看| 国产欧美精品一区二区| 在线手机中文字幕| 久久乐国产精品| 青草视频在线免费直播| 中文字幕精品www乱入免费视频| 久久久久久久亚洲| 亚洲午夜精品17c| 成人性生活毛片| 丁香一区二区三区| 91 视频免费观看| 免费高清成人在线| 少妇性l交大片| 国产九九精品| 欧美精品一区二区视频| 盗摄系列偷拍视频精品tp| 欧美激情影音先锋| 最新日本在线观看| 久久亚洲影音av资源网| 免费高清完整在线观看| 日韩在线免费观看视频| 成人影院免费观看| 日韩视频一区二区在线观看| 日韩欧美三级在线观看| 久久亚洲免费视频| 欧美高清性xxxx| 91麻豆免费看| 成人综合久久网| 国产一区欧美一区| 色哟哟在线观看视频| 国产精品一区二区在线观看网站| 国模无码视频一区二区三区| 一区二区亚洲| 鲁一鲁一鲁一鲁一色| 午夜在线精品| 九九视频精品在线观看| 蜜桃视频一区二区三区在线观看| 欧美三级理论片| 亚洲性人人天天夜夜摸| 国产日韩欧美精品在线观看| 99av国产精品欲麻豆| 亚洲国产精品www| 国产精品久久久久av蜜臀| 国产精品手机视频| 日本一区福利在线| 91中文在线观看| 日本免费一区二区三区视频| 超碰在线观看97| 成人精品动漫| 成人在线精品视频| 亚洲日本网址| 国产中文字幕亚洲| 中文字幕一区二区三区中文字幕| 国产suv精品一区二区| 国模私拍国内精品国内av| 69久久夜色精品国产69| 美女100%一区| 91精品国产99| 另类中文字幕国产精品| 97免费视频在线| 日韩123区| 欧美综合在线第二页| 黄色成人小视频| 国产精品日韩一区二区| 国产成人短视频在线观看| 丁香五月网久久综合| 欧美大奶一区二区| 亚欧精品在线| 香蕉国产成人午夜av影院| 婷婷五月色综合| 欧美黄色aaaa| 国产wwwxx| 不卡在线视频中文字幕| 91视频免费入口| 91麻豆免费观看| 国产av 一区二区三区| 欧美午夜久久久| www成人在线| 福利视频第一区| 国产精品毛片一区视频播| 亚洲精品短视频| 成人黄色网址| 国产成一区二区| 国产精品45p| 中文字幕一区综合| 99成人超碰| 亚洲欧美日韩在线综合| 亚洲激情另类| 黄色一级片播放| 国产精品一级在线| 蜜桃久久精品成人无码av| 国产视频亚洲色图| 久久久久久久久久久久久久久久久| 欧洲中文字幕精品| 无码国产伦一区二区三区视频 | 国产婷婷在线观看| 国产精品456露脸| 亚洲黄色在线网站| 亚洲成人午夜电影| 不卡av中文字幕| 日韩精品一区二区三区蜜臀| 国产高清免费av在线| 最新69国产成人精品视频免费| 欧美aaaaa性bbbbb小妇| 国产不卡一区二区三区在线观看| 国产精品videosex性欧美| 黄色一级免费大片| 久久亚洲影视婷婷| 国产成人精品亚洲男人的天堂| 激情av一区二区| 久久精品久久久久久久| 亚洲激情成人网| jizz一区二区三区| 成人黄动漫网站免费| 欧美成人久久| 波多野吉衣在线视频| 一区二区在线电影| 国产av无码专区亚洲av麻豆| 精品国产一区二区三区av性色| 亚洲精品国产片| 日韩精品在线观看一区| 福利写真视频网站在线| 欧美中文在线字幕| 欧美电影在线观看免费| 黄色国产一级视频| 欧美aa在线视频| 国产精品av久久久久久无| 日本福利一区二区| 国产在线黄色| 欧美乱大交xxxxx| 国产精品av一区二区三区| 久久精品国产美女| 日韩综合小视频| 美国精品一区二区| 51精品国自产在线| 日本亚洲一区| 国产suv精品一区二区| 成人在线一区| 中文字幕精品一区二区三区在线| 自拍偷拍国产精品| 亚洲精品视频网| 91av在线影院| 成人羞羞动漫| 亚洲欧美日韩网站| 亚洲一区二区三区视频在线播放| 亚洲欧美另类日韩| 777国产偷窥盗摄精品视频| 国产精品三级| 日本人69视频| 香蕉久久一区二区不卡无毒影院| 天天干天天爽天天操| 日韩av色在线| 91精品二区| www.超碰97| 欧美日韩精品高清| av在线加勒比| 日韩免费三级| 免费亚洲一区| 成年人免费视频播放| 欧美性生交大片免费| av在线中文| 国产 高清 精品 在线 a| 久久国产欧美| 欧美丰满少妇人妻精品| 欧美日韩一区久久| 欧美aaa免费| 日韩精品第一页| 成人三级在线视频| 波多野结衣一区二区在线| 色综合久久久888| 精品国产一区二区三区香蕉沈先生 | 午夜一区二区三区在线观看| 成人在线免费公开观看视频| 999热视频在线观看| 日韩一区二区在线免费| 国产一级不卡毛片| 一区二区三区四区在线免费观看| 欧美美乳在线| 成人蜜桃视频| 精品一区二区在线观看|