偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

五個可以替代 if-else 的代碼優(yōu)化技巧

開發(fā)
隨著業(yè)務邏輯變得越來越復雜,很容易寫出冗長、嵌套的 if-else 結構,導致代碼的可讀性差和維護困難。本文分享五個可以有效替代 if-else 的實用技巧。

if-else 是我們最熟悉、最常用的邏輯控制語句,它簡單、直接,是邏輯的基石之一。

但隨著業(yè)務邏輯變得越來越復雜,很容易寫出冗長、嵌套的 if-else 結構,導致代碼的可讀性差和維護困難。

但 JavaScript 是一門靈活的語言,分享 5 個可以有效替代 if-else 的實用技巧。

技巧一:使用三元運算符

這是最簡單直接的替代方案,適用于只有兩個分支的簡單 if-else 結構,尤其是在進行變量賦值時。

優(yōu)化前:

let statusText;
if (isOnline) {
  statusText = '在線';
} else {
  statusText = '離線';
}

優(yōu)化后:

const statusText = isOnline ? '在線' : '離線';

優(yōu)點:代碼極其簡潔,可讀性強,將一個簡單的邏輯判斷和賦值操作濃縮到一行。

技巧二:使用 Map 或對象字面量進行映射

當 if-else 的分支增多,且每個分支都對應一個固定的返回值時,使用 Map 或對象來進行查找(lookup)是絕佳的選擇。

優(yōu)化前:

function getStatusMessage(status) {
  if (status === 'success') {
    return '操作成功';
  } else if (status === 'error') {
    return '發(fā)生錯誤';
  } else if (status === 'pending') {
    return '處理中...';
  } else {
    return '未知狀態(tài)';
  }
}

優(yōu)化后:

優(yōu)點:

  • 可讀性高:邏輯關系一目了然,就像查字典一樣
  • 易于擴展:新增一個狀態(tài)時,只需在 statusMessages 對象中增加一個鍵值對即可

技巧三:使用策略模式(函數(shù)映射)

如果你的不同條件分支執(zhí)行的是不同的操作(函數(shù)),而不是返回靜態(tài)值,那么可以映射到函數(shù)上,這就是一種輕量級的策略模式。

優(yōu)化前:

function handleApiResponse(response) {
  if (response.code === 200) {
    handleSuccess(response.data);
  } else if (response.code === 401) {
    redirectToLogin();
  } else if (response.code === 404) {
    showNotFoundPage();
  } else {
    showGenericError();
  }
}

優(yōu)化后:

優(yōu)點:將“條件判斷”和“具體執(zhí)行”解耦。每個操作都是一個獨立的函數(shù),職責清晰,代碼結構更加模塊化和可測試。

技巧四:善用短路運算符 (&&, ||, ??)

在很多情況下,我們只是想在滿足某個條件時執(zhí)行一個操作,或者在某個值為null/undefined時提供一個默認值。這時,短路運算符是你的好朋友。

(1) 使用 && 替代簡單的 if

優(yōu)化前:

if (isDebugMode) {
  console.log('這是一條調試信息');
}

優(yōu)化后:

isDebugMode && console.log('這是一條調試信息');

原理:&& 運算符只有在左側表達式為真(truthy)時,才會執(zhí)行并返回右側的表達式。

(2) 使用 || 或 ?? 提供默認值

場景:獲取一個可能不存在的用戶名,如果不存在,則顯示“游客”。

優(yōu)化前:

let displayName;
if (user.name) {
  displayName = user.name;
} else {
  displayName = '游客';
}

優(yōu)化后:

注意 || 和 ?? 的區(qū)別:

  • || 會將所有“假值”(false, 0, '', null, undefined, NaN) 都替換為默認值
  • ?? 只會將 null 和 undefined 替換為默認值。如果你希望保留 0 或空字符串 '' 這樣的有效值,?? 是更安全的選擇

技巧五:使用規(guī)則數(shù)組

當條件判斷變得更加復雜,不再是簡單的鍵值匹配(例如,包含范圍判斷 > <)時,我們可以將一系列規(guī)則抽象成一個數(shù)組。

場景:根據(jù)訂單金額,計算不同的折扣率。

優(yōu)化前:

function getDiscount(orderAmount) {
  if (orderAmount >= 500) {
    return 0.2; // 20% 折扣
  } else if (orderAmount >= 200) {
    return 0.1; // 10% 折扣
  } else if (orderAmount >= 100) {
    return 0.05; // 5% 折扣
  } else {
    return 0;
  }
}

優(yōu)化后:

const discountRules = [
  { condition: amount => amount >= 500, discount: 0.2 },
  { condition: amount => amount >= 200, discount: 0.1 },
  { condition: amount => amount >= 100, discount: 0.05 },
];

function getDiscount(orderAmount) {
  // 查找第一個滿足條件的規(guī)則
  const rule = discountRules.find(r => r.condition(orderAmount));
  return rule ? rule.discount : 0;
}

優(yōu)點:

  • 聲明式:代碼從“如何做”變成了“是什么”。定義一系列規(guī)則,然后讓程序自己去匹配
  • 極易擴展:新增一個折扣檔位,只需在 discountRules 數(shù)組的最前面加一個對象即可

if-else 本身沒有錯,它是編程的必要組成部分。但當它演變成具有復雜邏輯的代碼時,就需要對其進行優(yōu)化了。

責任編輯:趙寧寧 來源: JavaScript
相關推薦

2020-05-13 14:15:25

if-else代碼前端

2021-11-04 08:53:00

if-else代碼Java

2013-03-06 10:28:57

ifJava

2024-03-25 10:00:00

C++編程else

2022-11-04 11:18:16

代碼優(yōu)化可讀性

2023-06-02 07:30:24

If-else結構流程控制

2025-04-24 08:40:00

JavaScript代碼return語句

2023-11-05 19:46:56

JavaIntelliJ代碼

2024-06-18 18:36:03

2024-11-01 07:30:00

2011-09-19 13:08:54

優(yōu)化網(wǎng)絡連接DNS代理緩存

2021-05-29 07:36:08

MySQLSQL數(shù)據(jù)庫

2021-04-13 06:39:13

代碼重構code

2024-04-26 08:58:54

if-else代碼JavaSpring

2021-03-10 07:20:43

if-else靜態(tài)代碼

2011-05-10 17:06:05

SEO

2024-04-07 10:13:57

C++代碼if-else

2022-05-24 14:07:53

OpenFeignSpring開源

2020-08-12 09:53:18

代碼開發(fā)工具

2022-11-24 10:34:05

CSS前端
點贊
收藏

51CTO技術棧公眾號