У вас могут быть разные функции для разных случаев, например:
function getFixedRoutingSup36(CG, CC, subscribedPower) {
return (CG + CC + CSF * subscribedPower) / 12;
}
function getFixedRoutingNonSup36(CG, CC, subscribedPower, billedCSFCoef, numDayInPeriod) {
return (CG + CC) / 12 + subscribedPower * billedCSFCoef * numDayInPeriod / 100;
}
Это может быть полезно, если параметры, отправляемые каждому, сильно различаются (например, выше случай sup36 не нужен или используйте billedCSFCoef
или numDayInPeriod
).
Если вам нравится иметь одну точку входа для всего этого, вы все равно можете разделить функции, как это описано выше, но иметь одну точку входа, которую вы говорите людям использовать:
function getFixedRouting(dataType, CG, CC, subscribedPower, billedCSFCoef, numDayInPeriod) {
switch (dataType) {
case 1:
return getFixedRoutingSup36(CG, CC, subscribedPower);
case 2:
return getFixedRoutingNonSup36(CG, CC, subscribedPower, billedCSFCoef, numDayInPeriod);
case 3:
return someOtherFunction();
}
}
Недостатком здесь является то, что если в ваших случаях используется другой набор параметров, это может стать некрасивым.
Другой вариант - передать параметры как объект Javascript, чтобы содержимое может отличаться:
function getFixedRouting(data) {
switch (data.type) {
case 1:
return getFixedRoutingSup36(data.CG, data.CC, data.subscribedPower);
case 2:
return getFixedRoutingNonSup36(data.CG, data.CC, data.subscribedPower, data.billedCSFCoef, data.numDayInPeriod);
case 3:
return someOtherFunction();
}
}