精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成人精品1314www| 亚洲日本护士毛茸茸| 国产成人激情小视频| 黑人操日本美女| 激情小说亚洲图片| 欧美性猛交xxxx乱大交退制版| 一本色道久久99精品综合| 欧日韩在线视频| 蜜芽一区二区三区| 欧美激情一二区| 天堂资源在线视频| 久久人人爽人人爽人人片av不| 欧美日韩一区小说| 天堂…中文在线最新版在线| 日韩黄色影院| 久久综合给合久久狠狠狠97色69| 91亚洲国产精品| 福利网址在线观看| 国产精品v日韩精品v欧美精品网站| 亚洲一区第一页| 天堂www中文在线资源| 偷拍自拍亚洲| 色88888久久久久久影院按摩| 99久久久精品视频| 麻豆系列在线观看| 国产精品视频麻豆| 热re99久久精品国99热蜜月 | 欧美午夜精品一区二区三区| 日韩美女爱爱视频| 26uuu亚洲电影在线观看| 日本一二三四高清不卡| 久久国产精品久久精品国产| 亚洲精品久久久久久无码色欲四季| 麻豆精品视频在线观看视频| 日本最新高清不卡中文字幕| 日韩成人免费在线视频| 好吊视频一区二区三区四区| 欧美不卡视频一区发布| 可以免费看av的网址| 欧美日韩黑人| 一本大道久久加勒比香蕉| 久久久久久久久免费看无码| 精品一区二区男人吃奶| 日韩你懂的在线播放| 国产91在线免费观看| 亚洲成人a级片| 欧美日韩日日摸| 亚洲欧美激情网| 芒果视频成人app| 日韩欧美大尺度| 超碰97人人射妻| 亚洲小少妇裸体bbw| 午夜精品一区二区三区电影天堂| 丝袜人妻一区二区三区| 精品一性一色一乱农村| 亚洲第一在线综合网站| 国产自产在线视频| 川上优av中文字幕一区二区| 亚洲在线中文字幕| 少妇人妻大乳在线视频| 色戒汤唯在线观看| 色哟哟日韩精品| 三上悠亚在线一区二区| 3d动漫一区二区三区在线观看| 欧美日韩成人高清| 中文字幕第三区| 99国产精品久久一区二区三区| 欧美xxxxxxxxx| 少妇一级淫免费观看| 日韩福利视频一区| 亚洲午夜女主播在线直播| 妖精视频在线观看免费| 国产精品久久久久久久久久10秀| 欧美精品做受xxx性少妇| 久久午夜无码鲁丝片| 亚洲激情社区| 国产精品igao视频| 国产视频在线一区| 成人av在线看| 视频在线精品一区| 成人短视频在线| 天天综合天天综合色| 国产视频一区二区三区在线播放 | av播放在线观看| 日韩美女视频一区二区| 僵尸世界大战2 在线播放| 韩漫成人漫画| 欧美一区二区在线观看| 久久久国产精品无码| 欧美偷拍自拍| 久久久影视精品| 最近中文字幕在线观看| 福利电影一区二区| 日韩福利影院| 91九色国产在线播放| 在线免费观看成人短视频| 伊人免费视频二| 亚洲高清极品| 美女久久久久久久久久久| 麻豆久久久久久久久久| 久久99精品久久久久久动态图 | 日本在线精品视频| 国产视频在线观看免费| 久久精子c满五个校花| 成年在线观看视频| 成人涩涩视频| 日韩国产欧美精品在线| 91久久久久久久久久久久久久| 一本久久知道综合久久| 成人黄色生活片| 免费动漫网站在线观看| 亚洲自拍与偷拍| 中文字幕在线综合| 亚洲精品蜜桃乱晃| 欧美巨大黑人极品精男| 欧美激情一区二区三区免费观看| 成人爱爱电影网址| 麻豆传媒网站在线观看| 狠狠久久综合| 亚洲人成在线电影| 国产精品30p| 国产精品系列在线播放| 亚洲国产精品视频一区| 欧美成人ⅴideosxxxxx| 亚洲国产精品悠悠久久琪琪| 久草视频中文在线| 国产精品亚洲成人| 一区二区三区四区五区视频| 中文一区一区三区高中清不卡免费| 欧美videofree性高清杂交| 99鲁鲁精品一区二区三区| 欧美aaaaaa午夜精品| 日本成人黄色免费看| 手机在线理论片| 亚洲激情视频网站| 日韩激情一区二区三区| 国产91富婆露脸刺激对白| 欧洲精品视频在线| 国产精品视频首页| 久久影视电视剧免费网站| 97精品人妻一区二区三区在线 | 日本肉肉一区| 国产亚洲精品美女久久久| 久久夜色精品国产噜噜亚洲av| av在线一区二区| 欧美午夜性视频| 看全色黄大色大片免费久久久| 国外成人在线直播| 天天干天天色天天| 欧美日韩亚洲一区二区三区| 一卡二卡三卡四卡| 久久在线精品| 亚洲国产日韩美| av日韩一区| 欧美大奶子在线| 国精产品一品二品国精品69xx| 午夜精品福利一区二区蜜股av| 欧美xxxx×黑人性爽| 在线亚洲国产精品网站| 牛人盗摄一区二区三区视频| 欧美极品免费| 自拍偷拍亚洲精品| 国产乱淫av片免费| 亚洲图片欧美视频| www.88av| 秋霞成人午夜伦在线观看| 手机看片日韩国产| 9l亚洲国产成人精品一区二三| 欧美精品电影在线| 国产在线观看高清视频| 欧美精品日韩一区| 久久久久久久九九九九| 91在线云播放| 色多多视频在线播放| 亚洲欧美网站在线观看| 痴汉一区二区三区| 免费电影日韩网站| 久久精品视频在线| 秋霞网一区二区| 91国偷自产一区二区使用方法| 国产白丝一区二区三区| 丰满放荡岳乱妇91ww| 国产精品欧美激情在线观看| 91精品国产乱码久久久久久| 国产精品日韩欧美一区二区| 久久91导航| 欧美丰满老妇厨房牲生活| 深夜福利视频在线观看| 在线播放中文字幕一区| 成人精品免费在线观看| 最新热久久免费视频| 喷水视频在线观看| 久久99精品国产.久久久久| 精品成在人线av无码免费看| 欧州一区二区| 国产在线播放一区二区| 视频欧美精品| 日本a级片电影一区二区| 污污的网站在线看| 亚洲人成自拍网站| 空姐吹箫视频大全| 56国语精品自产拍在线观看| 日韩 国产 欧美| 一区二区三区精品视频在线| 国产精品久久久久久成人| 波多野结衣中文字幕一区二区三区| 中文字幕在线观看日| 欧美一级网站| 精品视频在线观看一区| 婷婷亚洲五月色综合| 欧美极品视频一区二区三区| 日韩中文字幕| 国产主播喷水一区二区| 性欧美gay| 97国产suv精品一区二区62| 久久久久久久久免费视频| 国产亚洲欧美视频| 人人九九精品| 亚洲精品wwwww| 性猛交xxxx乱大交孕妇印度| 欧美高清dvd| 国产成人av免费| 色综合久久中文字幕综合网| 国产精品9191| 亚洲国产精品久久久久婷婷884 | 日韩一级av毛片| 99久久久国产精品| 成人区人妻精品一区二| 国产v日产∨综合v精品视频| 九九热精品国产| 蜜乳av一区二区| 亚洲第一中文av| 日韩国产欧美在线观看| 热久久精品国产| 久久久久国内| 男人透女人免费视频| 老司机一区二区三区| 国产成人黄色片| 国产亚洲精品bv在线观看| 欧美图片激情小说| 黄色日韩在线| 成年女人18级毛片毛片免费| 亚洲午夜黄色| 欧美精品卡一卡二| 一本久道久久综合婷婷鲸鱼| 日日橹狠狠爱欧美超碰| 亚洲一区自拍| 国产日韩成人内射视频 | 国产精品永久在线| 国产精品.xx视频.xxtv| 国产日韩欧美自拍| 国产一区二区三区国产精品| 99re国产在线播放| 国产区精品视频在线观看豆花| 国产一区二区久久久| 亚洲免费专区| 日韩欧美一区二区三区四区五区| 久久国产精品亚洲人一区二区三区 | 黄色片免费网址| 岛国精品一区二区| 国产激情视频网站| 久久精品视频在线看| 国产又粗又长又硬| 亚洲日本青草视频在线怡红院| 国产亚洲欧美精品久久久www| 红桃视频成人在线观看| 欧美一区免费看| 欧美精品日韩一本| 国产香蕉在线观看| 国产一区二区久久精品| 中文字幕资源网在线观看| 午夜精品视频在线| 亚洲mmav| 97自拍视频| 久久99性xxx老妇胖精品| 在线精品亚洲一区二区| 好看的av在线不卡观看| 成人精品视频一区二区| 国产在线日韩欧美| 黄色av网址在线观看| 国产精品欧美极品| 久久久久亚洲av片无码下载蜜桃 | 中文字幕 日韩有码| 日韩女同互慰一区二区| 国内精品一区视频| 欧美第一黄色网| 午夜精品成人av| 亚洲精品免费网站| 亚洲电影男人天堂| 国产免费色视频| 欧美亚洲视频| 成人一区二区三区仙踪林| 国产蜜臀97一区二区三区| 精品亚洲永久免费| 欧美三级日韩在线| 亚欧洲精品视频| 免费不卡在线观看av| 春暖花开亚洲一区二区三区| 97久草视频| 999国产精品永久免费视频app| 九色自拍视频在线观看| 久久99久久99精品免视看婷婷| 国产中文字幕一区二区| 一区二区三区欧美久久| 中文字幕二区三区| 日韩精品一区二区三区第95| 成人免费网址| 国产精品旅馆在线| 成人激情自拍| 最近中文字幕免费mv| 日韩中文字幕麻豆| 国产精品麻豆入口| 亚洲激情欧美激情| 国产乱码精品一区二区| 夜夜嗨av一区二区三区免费区 | 右手影院亚洲欧美| 一区二区三区欧美日韩| 一区二区美女视频| 一区二区av在线| 美女福利一区二区| 精品一区二区三区国产| 欧美日本国产| 欧美日韩理论片| 中文字幕在线一区二区三区| 波多野结衣视频网址| 精品亚洲aⅴ在线观看| av中文资源在线资源免费观看| 97超碰人人看人人| 在线中文一区| 在线观看视频你懂得| 国产精品美女一区二区三区| 最近日韩免费视频| 一区二区三区四区在线观看视频| 欧美日韩免费看片| 欧美日韩精品一区| 美女诱惑一区| 人妻av无码一区二区三区| 色综合 综合色| 你懂得网站在线| 国产成人av在线| 欧美日韩激情在线一区二区三区| 成年人在线观看视频免费| 国产欧美日韩综合| 亚洲视屏在线观看| 日韩中文字幕在线| 91麻豆精品| 艳母动漫在线观看| 国产精品乡下勾搭老头1| 精品少妇爆乳无码av无码专区| 精品国产成人系列| 黄色污网站在线观看| 欧美日韩在线播放一区二区| 免费中文字幕日韩欧美| 免费黄色片网站| 欧美欧美欧美欧美首页| bestiality新另类大全| 91九色视频在线观看| 亚洲日韩视频| 性高潮久久久久久久| 欧美写真视频网站| 国产一二区在线观看| 成人区精品一区二区| 久久经典综合| 三上悠亚在线观看视频| 精品女同一区二区| 澳门成人av网| 一本一本久久a久久精品综合妖精| 国产在线精品一区二区不卡了 | 亚洲精品123区| 亚洲综合色一区| 在线成人小视频| 丰满的护士2在线观看高清| 欧美在线一区二区三区四区| 久久成人免费电影| 久操视频免费在线观看| 精品亚洲一区二区三区四区五区 | 巨乳诱惑日韩免费av| 国产色无码精品视频国产| 亚洲国产精品推荐| av成人免费| 福利在线一区二区| 国产欧美一区二区三区网站| 国产又粗又黄又爽| 91干在线观看| 国产大片一区| 免费中文字幕av| 7777精品伊人久久久大香线蕉的| 高h视频在线播放| 五月天久久综合网| 成人免费视频caoporn| 久久久久久av无码免费看大片| 欧美成人午夜免费视在线看片| 亚洲肉体裸体xxxx137| www.国产福利| 欧美中文字幕亚洲一区二区va在线 | 欧美一级淫片免费视频魅影视频| 国产脚交av在线一区二区| 国产精品chinese| 免费成人美女女在线观看| 亚洲激情在线观看|