So che la convenzione "I" è in circolazione dalla COM, ma non ho mai capito perché non è stata riconsiderata come ogni altra convenzione di denominazione prima di .NET.
Consumo saggio, l'unica cosa che separa un'interfaccia da, diciamo, una classe astratta, è che possono essere moltiplicati per ereditarietà. Ma tutto dopo Visual Studio 2003 ha mostrato le firme dei tipi in tooltip, 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 es. Message
eredita IMessage
, ma la maggior parte delle librerie .NET è andata per aggiungere la parola "Base" alla fine (ad esempio System.Collections.ReadOnlyCollectionBase
) invece - e questo ha più senso della semantica.
L'interoperabilità COM sembra essere un'altra ragione possibile - ma non è come se le classi wrapper che genera fossero perfettamente idiomatiche .NET, quindi dubito che quella fosse una considerazione estetica.
In uno dei miei progetti più recenti ho completamente rinunciato alla convenzione, e mi sento bene. C'è qualcosa che mi manca?