Quindi Clean Code dice che dovresti separare ciascuna attività con una singola funzione (e aggiungere queste funzioni con un nome corretto).
Mi piace l'idea, ma finora ho affrontato questo problema: ricevi un parametro che vuoi usare anche nella funzione più in alto, ma ne hai bisogno anche al livello più basso, quindi devi passare parametro per ogni funzione intermedia, che non è cool.
Ecco il mio codice:
onUpdate = function(currentSeconds){
updateRoute(currentSeconds);
updateAlerts(currentSeconds);
};
updateAlerts = function(currentSeconds){
for(var i = 0; i < alertMarkers.length; ++i)
oneAlertUpdate(currentSeconds, alertMarkers[i], alertAll[i]);
}
oneAlertUpdate = function(currentSeconds, alertMarker, alert){
updateAlertMarker(alertMarker, alert[entryIndex]);
changeMarkerOpacityIfNeeded(alertMarker, currentSeconds);
}
}
changeMarkerOpacityIfNeeded = function(alertMarker, currentSeconds){
//set opacity based on currentSeconds
var opacity = alertMarker.opacityTime < currentSeconds ? 1 : 0.5;
if(alertMarker.getOpacity() != opacity)
alertMarker.setOpacity(opacity);
}
- il parametro qui è currentSeconds deve essere passato, ma è usato solo al livello più basso
- tieni presente che non uso currentSeconds direttamente nella funzione più in alto, ma è cruciale che venga passato lì, scriverò il motivo se dici che è pertinente