Есть ли какой-либо другой способ оптимизировать эту функцию или лучший подход?

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я написал функцию, используя react, и она работает правильно и, как и ожидалось, моя единственная проблема заключается в том, есть ли какой-либо другой способ оптимизировать ее только для удобства чтения и лучшего подхода

Вот мой код:

 export const formatter = (num, lastDigit = 3) => {
  if (num.length === 13) {
    return `xxxx xxxx xx ${num.substr(num.length - lastDigit)}`;
  } else if (num.length === 14) {
    return `xxxx xxxx xxx ${num.substr(num.length - lastDigit)}`;
  } else {
    return `xxxx xxxx xxxx ${num.substr(num.length - lastDigit)}`;
  }
};
 

Комментарии:

1. Для чего вы проводите оптимизацию? Производительность? Удобочитаемость? Лаконичность? Что-нибудь еще?

2. Для удобства чтения

3. Вы могли бы уменьшить дублирование, сохранив результат ${num.substr(num.length - lastDigit)} в переменной, а затем объединить его с другой строкой, содержащей ‘x»s .

4. Приведите несколько тестовых примеров

Ответ №1:

Для удобства чтения:

  • Переместить повторяющийся код в константу
  • Использование switch вместо if / else проще для чтения, потому что легче увидеть, что логика имеет дело с различными вариантами для одного значения
 export const formatter = (num, lastDigit = 3) => {
  const value = num.substr(num.length - lastDigit);

  switch(num.length) {
    case 13:
      return `xxxx xxxx xx ${value}`;
    case 14:
      return `xxxx xxxx xxx ${value}`;
    default:
      return `xxxx xxxx xxxx ${value}`;
  };
};
 

Ответ №2:

Для лучшей читаемости вы можете попробовать это:

 export const formatter = (num, lastDigit = 3) => {
  const length = num.length;
  const subString = num.substr(num.length - lastDigit);
   
  if (length === 13) {
    return `xxxx xxxx xx ${subString}`;
  } else if (num.length === 14) {
    return `xxxx xxxx xxx ${subString}`;
  } else {
    return `xxxx xxxx xxxx ${subString}`;
  }
};