¿Cuál sería la mejor manera de procesar estos datos? ¿Es esto solo una cuestión de preferencia personal? Guessing 2 es menos propenso a modificar accidentalmente las matrices lunes...viernes y hay menos código en esta capa. ¿Existe un enfoque de mejores prácticas? ¿Hay alguna diferencia de rendimiento?
// Arrays to hold what stock price belongs to what day of the week - Note these arrays are used some way down the line var monday = [], tuesday = [], wednesday = [], thursday = [], friday = [] // Sort each stock date into a day of the week FindDayFromDate(historyData, monday, tuesday, wednesday, thursday, friday); // Find the average price for each day of the week const avgPrices = FindAveragePricePerDay(monday, tuesday, wednesday, thursday, friday); // Sort each stock date into a day of the week - sortedDays contains arrays of monday...friday const sortedDays = FindDayFromDate(historyData); // Find the average price for each day of the week - Expand sortedDays inside function to access monday...friday const avgPrices = FindAveragePricePerDay(sortedDays);Una buena función siempre debe estar libre de efectos secundarios. Debe ser puro y solo hacer un trabajo específico a la vez. Como programador/desarrollador de software, debemos escribir código fuente que realmente produzca la salida basada en la entrada. Este tipo de función pura y fuerte en realidad evita todo tipo de efectos secundarios y olores de código. Veamos algunos ejemplos para entender esto.
Supongamos que tenemos una función llamada Saludo como se muestra a continuación.
function Greeting(name) { return `Hello ${name}`; }Es puro porque siempre obtendrá la salida Hola {nombre} para el nombre pasado a través del parámetro. Echemos un vistazo a otra versión de la misma función con muchos efectos secundarios.
var greeting = "Hey"; function Greeting(name) { return `${greeting} ${name}`; }Ahora bien, esta función no es pura. Adivina qué ? Porque no estamos seguros de qué salida recibiremos porque la función en realidad depende de la variable externa denominada saludo . Entonces, si alguien cambia el valor de la variable saludo a otra cosa, digamos Hola , obviamente, la salida de la función cambiará. Entonces, la función ahora está estrechamente acoplada con la variable externa. Por eso ya no es pura función.
Entonces, para concluir, debe escribir su función de tal manera que no haya dependencia ni efectos secundarios y siempre hará un trabajo.
Esa es la mejor práctica :)
Codificación feliz :)
Creo que la llamada a la segunda función "FindAveragePricePerDay" se puede ajustar para que actúe en un solo día, de modo que se pueda reutilizar en otros lugares
const avgPrices = sortedDays.map(day => FindAveragePricePerDay(day)); /* you can also simplify the FindAveragePricePerDay using the reduce method following this parameters array.reduce(function(total, currentValue, currentIndex, arr), initialValue) so all the second line would be */ const avgPrices = day.reduce((t,c,i,arr) => t + c/arr.length, 0);para obtener más información sobre array.reduce, consulte esto