У меня есть функция min a max, которая просто идентична, за исключением того, что используется Math.min
, а последняя использует Math.max
// calculate min value
function getMinMetric(measurements, metric) {
let value = null
measurements.forEach(measurement => {
if (measurement[metric]) {
!value ? (value = measurement[metric]) : (value = Math.min(value, measurement[metric]))
}
})
return value
}
// calculate max value
function getMaxMetric(measurements, metric) {
let value = null
measurements.forEach(measurement => {
if (measurement[metric]) {
!value ? (value = measurement[metric]) : (value = Math.max(value, measurement[metric]))
}
})
return value
}
Любая функция будет возвращена в зависимости от условий, таких как:
function calculateStatsForMetric(stat, metric, measurements) {
if (stat === 'min') return getMinMetric(measurements, metric)
if (stat === 'max') return getMaxMetric(measurements, metric)
*****
}
Как я мог бы объединить функции min и max в один метод для СУХОГО подхода, поэтому я не получаю избыточность?
Далее: Это хорошая практика - или на самом деле, я должен стремиться к тому, чтобы отдельные функции возвращали отдельные значения (как сейчас), чтобы они могли быть независимыми и иметь разделение интересов?