Функциональное программирование функции каденции - PullRequest
0 голосов
/ 06 октября 2018

У меня есть программный проект, в котором у меня есть куча функций, которые проверяют одну вещь.Итак, код выглядит так:

const isRed = color => color === 'red;;
const isBlue = color => color === 'blue';

function whichColour(color){
  if(isRed(color){
    return 'X'
  }
  
   if(isBlue(color){
    return 'Y'
  }

}

Это всего лишь пример, и приложение имеет ОДНО больше этих функций, которые проверяют одну вещь.Я думал, что все эти функции, которые выполняют одну функцию, соответствуют парадигмам функционального программирования.

Однако недавно я подумал, что было бы лучше сделать это:

const isColor = (color, targetColor) => color === targetColor;

function whichColor(color){
  if(isColor(color, 'red'){
    return 'X'
  }
  if(isColor(color, 'blue')){
    return 'Y'
  }
}

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

Дайте мне знать, что вы думаете.

Ответы [ 2 ]

0 голосов
/ 06 октября 2018
const colors = {
    red: 'X',
    blue: 'Y',
    green: 'Z',
    // a lot of other colors
}

function whichColor(color) {
    return colors[color]
}
0 голосов
/ 06 октября 2018

Лучшим подходом является тот, который уменьшает объем дублирующегося кода в целом, так как он оставляет код более аккуратным и более доступным в большинстве случаев.Итак, второй путь - это тот, который я бы выбрал в этом случае.Единственное изменение, которое я бы предложил сделать - это назвать метод sameColor или colorMatch.

...