28 августа 2014 г.

Частая ошибка №7: Использование неверного типа коллекции для поставленной задачи. Перевод.

Оглавление

C# предоставляет большое разнообразие объектов-коллекций, приведем неполных их список:
Array, ArrayList, BitArray, BitVector32, Dictionary<K,V>, HashTable, HybridDictionary, List<T>, NameValueCollection, OrderedDictionary, Queue, Queue<T>, SortedList, Stack, Stack<T>, StringCollection, StringDictionary.
Хотя бывают случаи когда слишком много вариантов для выбора - это хуже, чем когда вариантов недостаточно, но это не тот случай. Такое количество вариантов определенно может быть вам выгодно. Потратьте немного времени что разобраться и выбрать оптимальный тип коллекции для ваших целей. Результатом скорее всего будет более высокая производительность и меньше возможностей для ошибок.

Если есть тип коллекции, специально ориентированный на тип элементов, который вам нужен (например string или bit) лучше сначала использовать именно эту коллекцию. Как правило, реализация более эффективна если она направлена на определенный тип элементов.

Чтобы получить преимущества безопасности типов C#, как правило, вам следует выбирать универсальный интерфейс, вместо не универсального. Элементы универсального интерфейса будут иметь такой тип, какой вы укажете при объявлении, в то время как элементы не универсального интерфейса будут иметь тип object. Когда используется не универсальный интерфейс, компилятор C# не может выполнить проверку типов в вашем коде. Также, когда вы имеете дело с коллекциями примитивных типов значений, использование не универсальной коллекции приведет к повторяющейся упаковке/распаковке этих типов, что может привести к значительному негативному эффекту на производительность по сравнению с коллекцией соответствующего типа.

Другая ловушка - это написание собственного объекта-коллекции. Нельзя сказать что это никогда не допустимо, но с таким обширным выбором, который предоставляет .NET, скорее всего вы сэкономите много времени используя или наследуясь от тех классов, которые уже есть, и не будете "изобретать велосипед". В частности, C5 Generic Collection Library для C# и CLI предоставляют широкий набор дополнительных коллекций "из коробки".

Частая ошибка №8: Пренебрежение очисткой ресурсов
Оригинал

Комментариев нет:

Отправить комментарий