函数式编程函数节奏

Functional Programming function cadence

我有一个软件项目,其中有一堆功能可以检查一件事。所以代码看起来像这样:

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'
  }
}

我认为它们都具有可读性,因为您可以看到所需的值,并且它会节省很多 space 因为我确实有很多这些小功能。但是,我不确定哪个更好。

告诉我你的想法。

更好的方法是减少一般重复代码的数量,因为它使代码在大多数情况下更整洁、更容易理解。所以第二种方法是我在这种情况下会采用的方法。我建议做的唯一更改是将方法命名为 sameColorcolorMatch

const colors = {
    red: 'X',
    blue: 'Y',
    green: 'Z',
    // a lot of other colors
}

function whichColor(color) {
    return colors[color]
}