Рефакторинг if-else - PullRequest
       5

Рефакторинг if-else

0 голосов
/ 01 октября 2019

Я пытаюсь реорганизовать этот блок операторов if else. Что может быть лучшей оптимизированной версией этого кода?

`const handlePhoneNumberFormat = (rules, value, callback) => {
    if (value && value.match(phoneNumberRegex)) {
      if (value.includes('-')) {
        if (value.indexOf('-') === 2) {
          if (value.length !== 10) {
            callback('Please enter 7 digits after "-".');
          } else {
            callback();
          }
        } else if (value.indexOf('-') === 3) {
          if (value.length !== 14) {
            callback('Please enter 10 digits after "-".');
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback();
      }
    } else {
      callback('');
    }
  };`

Ответы [ 3 ]

1 голос
/ 01 октября 2019

Вот одно решение, которое, вероятно, работает так же хорошо, как ваш кодне намного меньше и труднее читать

0 голосов
/ 01 октября 2019

Одна из ваших возможностей - использовать троичный оператор в вашей функции для определения значения, которое вы хотите передать:

    var returnValue;

    returnValue = (value && value.match(phoneNumberRegex) && value.includes('-')  && value.indexOf('-') === 2) ? 'Please enter 7 digits after "-".' : returnValue ;

    callback(returnValue);
0 голосов
/ 01 октября 2019

Вы все еще можете использовать условия, если не указано иное, но вам нужно объединить некоторые коды, такие как

 value.indexOf('-') and value.includes('-') value && value.match(phoneNumberRegex)

и

value.indexOf('-') === 3 and value.length !== 14

, чтобы сделать ваш код короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...