Я знаю, що конвенція "Я" існує вже з часів COM, але я ніколи не розумів, чому вона не була переглянута, як і будь-яка інша конвенція про іменування раніше .NET має.
Єдине, що відокремлює інтерфейс від, скажімо, абстрактного класу, - це те, що вони можуть множитися у спадок. Але все після того, як Visual Studio 2003 показав підписи типів у підказках, тому це так само марно, як і всі інші угорські позначення, які були відкинуті.
Я також подумав, що це може бути так, що ви можете мати базову реалізацію інтерфейсу з тим же ім'ям, наприклад, Message
успадковувати IMessage
, але більшість бібліотек .NET пішли на додавання слова "Base" в кінці (наприклад System.Collections.ReadOnlyCollectionBase
) замість цього - і це має більш смисловий сенс.
COM interop, здається, є ще однією можливою причиною - але це не так, якби класи, які він створює, абсолютно ідіоматичні. NET, тому я сумніваюся, що це було естетичним аспектом.
В одному з моїх нових проектів я повністю відмовився від конвенції, і це почувається просто чудово. Щось мені не вистачає?
IList
- це загальний термін для послідовної, суміжної колекції, випадкового доступу, тоді List
як це послідовний, суміжний, випадковий доступ, зростаюча колекція. Я думаю , що F # було право в альясінге List
до ResizeArray
; це, безумовно, набагато більш описова назва. IList
тоді це могло бути List
, так що, схоже, це теж не було б причиною.