Quindi vuoi scrivere questo metodo Module1, che dipende da qualche sottoinsieme delle proprietà di un oggetto Configuration.
Alcuni motivi per cui Module1 può prendere l'oggetto Configuration come un singolo parametro:
-
Le future versioni di Module1 potrebbero utilizzare proprietà aggiuntive dell'oggetto Configuration. Ciò richiederebbe modifiche a ogni sito di chiamata se si utilizzano parametri individuali. (Questo potrebbe non essere importante se Module1 è esposto solo internamente al tuo progetto, e hai IDE con funzionalità di refactoring avanzate. Importa molto se fa parte di un'API pubblicata pubblicamente.)
-
Nei luoghi in cui si desidera chiamare Module1, si dispone di un oggetto Configuration disponibile ed è più conveniente passare semplicemente l'intero oggetto piuttosto che passare in ogni proprietà pertinente.
Potresti volere che Module1 assuma le proprietà rilevanti come parametri individuali se:
- Nei punti in cui si desidera chiamare Module1, non si dispone di un oggetto Configuration disponibile e si possono fornire valori per le proprietà pertinenti ma non tutte le proprietà. (Questo è un motivo valido se sei sicuro che le versioni future non utilizzeranno più proprietà.)
Quindi, in realtà dipende da come prevedi che il metodo possa cambiare in futuro e da quanto sia pesante cambiare i siti di chiamata se la firma cambia.