So che la convenzione "I" esiste da COM, ma non ho mai capito perché non sia stata riconsiderata come ogni altra convenzione di denominazione prima di .NET.
Per quanto riguarda i consumi, l'unica cosa che separa un'interfaccia, per esempio, da una classe astratta, è che possono essere moltiplicati ereditati. Ma tutto dopo Visual Studio 2003 ha mostrato le firme dei tipi nelle descrizioni dei comandi, quindi è inutile come tutte le altre notazioni ungheresi che sono state scartate.
Ho anche pensato che potrebbe essere così che tu possa avere un'implementazione di base dell'interfaccia con lo stesso nome, ad esempio Message
ereditare IMessage
, ma la maggior parte delle librerie .NET sono andate per aggiungere la parola "Base" alla fine (ad esempio System.Collections.ReadOnlyCollectionBase
) invece - e questo ha più senso semantico.
L'interoperabilità COM sembra essere un'altra possibile ragione, ma non è che le classi wrapper che genera siano .NET perfettamente idiomatiche, quindi dubito che sia stata una considerazione estetica.
In uno dei miei progetti più recenti ho completamente dimenticato la convention e mi sento bene. C'è qualcosa che mi manca?
IList
è un termine generale per una raccolta sequenziale, contigua, accesso casuale, mentre List
è una sequenza, contigua, accesso casuale, raccolta crescente . Credo F # aveva ragione in aliasing List
a ResizeArray
; questo è sicuramente un nome molto più descrittivo. IList
allora avrebbe potuto essere List
, quindi non sembra che sarebbe una ragione neanche.