iT邦幫忙

0

更安全的判斷小撇步分享

  • 分享至 

  • xImage
  •  

最近自己偶然發現在學校沒有特別被教過但是卻默默養成的習慣,個人突然意識到似乎是好習慣所以來分享,雖然大多數人可能認為是常識,但硬是加入了點學術名詞希望能分享到些知識,也希望能讓大家觀察到自己有哪些默默養成以至於自己都沒注意到的好習慣來發文分享給更多人。

1. 把常數放在 == 的左邊

舉例來說常數是0或是個字串之類, if (variable == 0) 是邏輯全等於 if (0 == variable) 的,但是個人有手殘少打過一個等號的經驗,若用第一種寫法當下會以為判斷是照著流程走的沒錯,讓後續debug的時間白白浪費,但用第二種寫法多數編譯器或直譯器會報錯說不能對一個常數進行賦值。
學術的名詞形容這個方法是 Yoda condition。

2. 提前return

學術的名詞是 Guard clause。
使用情況是處理非正常流程、例外情況或無效輸入之類,如果 if 和 else 的流程都同等重要的業務邏輯下就不適用了,核心概念是盡早判斷是否達到條件離開迴圈減少浪費,舉例來說以下的函式判斷資料不能為空且長度要大於0

function process(data) {
    if (data !== null) {
        if (data.length > 0) {
            // 主要邏輯
        } else {
            // 處理空數據
        }
    } else {
        // 處理 null
    }
}

其實寫成以下的判斷更可以讓可讀性及日後修改的方便性都提高

function process(data) {
    if (data === null || data.length === 0) {
        return; // 條件不符,直接返回
    }
    // 主要邏輯,程式碼更平坦
}

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言