Switch-case to Object

// ❌ 過多無謂的判斷及重新復賦值
const getDay = (type) => {
  let day = null;

  switch (type) {
    case 0:
      day = 'Sunday';
      break;
    case 1:
      day = 'Monday';
      break;
    case 2:
      day = 'Tuesday';
      break;
    case 3:
      day = 'Wednesday';
      break;
    case 4:
      day = 'Thursday';
      break;
    case 5:
      day = 'Friday';
      break;
    case 6:
      day = 'Saturday';
      break;
    default:
      break;
  }

  return day;
};

// ✅ 變得更一目了然、簡單明瞭
const days = {
  0: 'Sunday',
  1: 'Monday',
  2: 'Tuesday',
  3: 'Wednesday',
  4: 'Thursday',
  5: 'Friday',
  6: 'Saturday',
  7: 'Sunday',
};

const getDay = (type) => {
  return days[type] || null;
};

Default parameters

// ❌ 預設參數不為最後一個
function getPassword(account, name = '', id) {
  // do something
}
// ❌ 若預設參數不為最後一個,則可能會有這種程式碼出現 (bad)
getPassword(account, undefined, id);

// ✅ 保持預設參數為最後一個的習慣
function getPassword(account, id, name = '') {
  // do something
}

// ✅ 若為最後一個,則可以避免剛才那種程式碼出現 (good)
getPassword(account, id);

Multiple parameters

// ❌ 若過多個參數須控制,則會造成閱讀上的困難
function getPassword(account, id, name, birthday, sex, phone) {
  // do something
}

// ❌ 呼叫此 function 時,會需要數第幾個
getPassword(acc, id, roleName, roleBirthDay, roleSex, rowPhone);

// ✅ 建議超過 3 個就改為物件
function getPassword({ account, id, name, birthday, sex, phone }) {
  // do something
}

// ✅ 呼叫此 function 時,也不需要數第幾個,名稱直接對應
getPassword({ account, id, name, birthday, sex, phone });