Ich weiß, dass es die "I" -Konvention seit COM gibt, aber ich habe nie verstanden, warum sie nicht wie jede andere Namenskonvention vor .NET überdacht wurde.
In Bezug auf den Verbrauch ist das einzige, was eine Schnittstelle beispielsweise von einer abstrakten Klasse unterscheidet, dass sie mehrfach vererbt werden können. Aber alles nach Visual Studio 2003 hat Typensignaturen in QuickInfos angezeigt, sodass es genauso nutzlos ist wie alle anderen ungarischen Notationen, die verworfen wurden.
Ich dachte auch, dass es so sein könnte, dass Sie eine grundlegende Implementierung der Schnittstelle mit demselben Namen haben können, z. B. Message
erben IMessage
, aber die meisten .NET-Bibliotheken haben System.Collections.ReadOnlyCollectionBase
stattdessen das Wort "Base" am Ende hinzugefügt (z. B. ) - und das macht semantischer Sinn.
COM-Interop scheint ein weiterer möglicher Grund zu sein - aber es ist nicht so, dass die von ihm generierten Wrapper-Klassen vollkommen idiomatisch .NET sind, daher bezweifle ich, dass dies eine ästhetische Überlegung war.
In einem meiner neueren Projekte habe ich ganz auf die Konvention verzichtet und es fühlt sich gut an. Fehlt mir etwas?
IList
ist ein allgemeiner Begriff für eine sequenzierte, zusammenhängende Sammlung mit wahlfreiem Zugriff, während List
es sich um eine sequenzierte, zusammenhängende, wahlfreie Sammlung mit wachsendem Zugriff handelt . Ich denke , F # , sie habe Recht in Aliasing List
zu ResizeArray
; Das ist definitiv ein viel aussagekräftigerer Name. IList
dann hätte es sein können List
, also scheint das auch kein Grund zu sein.