Diciamo che ho una funzione IsAdmin
che controlla se un utente è un amministratore. Diciamo anche che il controllo dell'amministratore viene eseguito abbinando ID utente, nome e password a una sorta di regola (non importante).
Nella mia testa ci sono quindi due possibili firme di funzione per questo:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
Vado spesso per il secondo tipo di firma, pensando che:
- La firma della funzione fornisce al lettore molte più informazioni
- La logica contenuta all'interno della funzione non deve conoscere la
User
classe - Di solito risulta un po 'meno codice all'interno della funzione
Tuttavia a volte metto in dubbio questo approccio e mi rendo anche conto che a un certo punto diventerebbe ingombrante. Se per esempio una funzione mappasse tra dieci diversi campi oggetto in un bool risultante, invierei ovviamente l'intero oggetto. Ma a parte un esempio severo come quello non riesco a vedere un motivo per passare l'oggetto reale.
Gradirei qualsiasi argomento per entrambi gli stili, nonché eventuali osservazioni generali che potresti offrire.
Programmo in stili sia orientati agli oggetti che funzionali, quindi la domanda dovrebbe essere vista come relativa a tutti gli idiomi.