"In a object oriented static typed language you should declare variables and parameters as broad as possible and return types as narrow as possible"
Preso alla lettera, cioè consigliando dichiaro tutte le variabili e i parametri come Object
(o qualunque sia la classe base per una data lingua). Questo è chiaramente senza senso. Inoltre, sta dicendo che non dovrei usare un'interfaccia per un tipo di ritorno quando posso usare un tipo specifico. Anche questo è chiaramente senza senso.
C'è un certo senso dietro le parole, ad esempio nel mondo .NET, è meglio usare ad esempio IEnumerable<T>
invece di T[]
o List<T>
se la collezione è semplicemente enumerata tramite ad esempio foreach
. In genere è meglio usare un tipo di astrazione (ad es. Interfaccia) su un tipo concreto. Ma questo vale per i tipi di ritorno da metodi privati tanto quanto per i parametri. Quindi non è ancora un ottimo consiglio.
Infine, la parte "object oriented" è irrilevante. Haskell, il poster poster del linguaggio funzionale, non ha supporto per OO, ma supporta ancora il polimorfismo ed è strongmente tipizzato. Lo stesso "favorisce un tipo di astrazione su un tipo concreto" si applica anche lì.
Quindi, in conclusione, ci sono voluti alcuni consigli sonori di base, distorti e il messaggio è stato tutto sbagliato. Quindi non è un buon consiglio.