Cyclomati c Сложность этой функции составляет 11, что превышает 10 разрешенных - PullRequest
0 голосов
/ 28 февраля 2020
if ((['ALL', ''].includes(this.accountnumber.value) ? true : ele.accountnumber === this.accountnumber.value) &&
        (['ALL', ''].includes(this.description.value) ? true : ele.description === this.description.value) &&
        (['ALL', ''].includes(this.country.value) ? true : ele.country === this.country.value) &&
        (!this.entryDate ? true : (this.entryDate === dateEntry)) && 
        (!this.editedDate ? true : (this.editedDate === dateEdited))) {
        return true;
      }

1 Ответ

1 голос
/ 28 февраля 2020

Иногда лучше написать больше кода, чтобы лучше понять, что происходит.

Первое быстрое изменение заключается в расширении вашего if контента, например:

Обратите внимание, что троичный не является обязательным Простой оператор || будет иметь тот же эффект.

PS : потому что я не задумывался о том, почему вы делаете то, что делаете, я использовал неправильное именование переменных. Если вы повторно используете следующее, измените их и добавьте комментарии о том, чего вы пытаетесь достичь.

const isA = [
 'ALL',
 '',
].includes(this.accountnumber.value) || ele.accountnumber === this.accountnumber.value;

const isB = [
  'ALL',
  '',
].includes(this.description.value) || ele.description === this.description.value;

const isC = [
  'ALL',
  '',
 ].includes(this.country.value) || ele.country === this.country.value;

const isD = !this.entryDate || this.entryDate === dateEntry;

const isE = !this.editedDate || this.editedDate === dateEdited;

if (isA && isB && isC && isD && isE) {
  return true;
}

Расширение также делает еще более очевидным, что некоторый код дублируется.

function checkCond(key, obj, arr = [
  'ALL',
  '',
]) {
  return arr.includes(this[key].value) || obj[key] === this[key].value; 
}

const isA = checkCond('accountnumber', ele);
const isB = checkCond('description', ele);
const isB = checkCond('country', ele);

const isD = !this.entryDate || this.entryDate === dateEntry;

const isE = !this.editedDate || this.editedDate === dateEdited;

if (isA && isB && isC && isD && isE) {
  return true;
}

Еще дальше:

function checkCond(key, obj, arr = [
  'ALL',
  '',
]) {
  return arr.includes(this[key].value) || obj[key] === this[key].value; 
}

const conditions = [
  checkCond('accountnumber', ele),
  checkCond('description', ele),
  checkCond('country', ele),

  !this.entryDate || this.entryDate === dateEntry,
  !this.editedDate || this.editedDate === dateEdited,
];

if (conditions.every(x => x)) {
  return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...