#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}`;
}
};