только заменить
retrieveData();
на
this.retrieveData();
Не делайте этого. Когда люди чтение:
List<Customer>
они сразу понимают это. Когда они читают:
CustomerList
они должны пойти и выяснить то, что CustomerList, и это делает Ваш код тяжелее для чтения. Если Вы не единственный, работающий над Вашей кодовой базой, писание читаемого кода является хорошей идеей.
хорошо, если Вы не добавляете некоторую функциональность к базовому классу нет никакого смысла в создании интерфейсного объекта. Я пошел бы с номером два, если Вы действительно должны, но почему не только создают переменную?
List<Customer> customerList = new List<Customer>();
Я согласился бы с не использованием псевдонима тем способом. Никто в Вашей команде не должен использовать псевдонимы, таким образом представленные; это не причина, искажающая, был обеспечен. Кроме того, от пути дженерики работают, существует только когда-либо один класс Списка, неважно, сколько мест Вы используете его.
В дополнение только к объявлению и использованию List<Customer>
, Вы собираетесь в конечном счете хотеть передать тот список чему-то еще. Постарайтесь не передавать бетон List<Customer>
и вместо этого передача IList<Customer>
или ICollection<Customer>
поскольку это сделает те методы более эластичными и легче к программе против.
Однажды в будущем при реальной необходимости в классе набора CustomerList можно реализовать ICollection<Customer>
или IList<Customer>
на нем и продолжают передавать его тем методам без них изменение или даже знание лучше.
На самом деле Вы не должны использовать также. Корректный подход согласно руководству по проектированию платформы должен или использовать или наследоваться Системе. Наборы. ObjectModel. Набор <T> в общедоступных API (Список <T> должен только использоваться для внутренней реализации).
Но относительно конкретного вопроса именования, рекомендация, кажется, для использования универсального имени типа непосредственно, не искажая, если Вы не должны добавлять функциональность к набору:
Действительно возвратите Набор <T> из объектных моделей, чтобы предоставить стандартному простому ванильному набору API.
Действительно возвратите подкласс Набора <T> от объектных моделей, чтобы предоставить высокоуровневому набору API.
Это - один из тех, 'Он зависит' вопросы.
Если то, в чем Вы нуждаетесь, является новым классом, который ведет себя как Список Клиентов в дополнение к Вашим другим требованиям затем, наследование является путем.
Если Вы просто хотите использовать список клиентов, затем используют переменную.
Если Вы просто пытаетесь экономить на вводе, то используйте последнего. Вы не собираетесь сталкиваться с любыми причудливыми проблемами наследования тот путь.
Если Вы на самом деле хотите выставить логически отличный тип набора, то используйте первого - можно возвратиться и добавить материал к нему затем.
Лично, я просто использовал бы List<Customer>
и прекратите дело.
Я по существу соглашаюсь с Ed. Если Вы не должны на самом деле расширять функциональность универсальной конструкции Списка, просто используйте универсальный Список:
List<Customer> customerList = new List<Customer>();
Если бы действительно необходимо расширять функциональность затем обычно, Вы посмотрели бы на наследование.
Третья возможность состоит в том, откуда Вам нужна значительно измененная функциональность универсальной конструкции списка, в этом случае можно хотеть просто наследоваться IEnumerable. Выполнение так делает класс применимым в счетных операциях (таких как "foreach"), но позволяет Вам полностью определять все поведение класса.
Один программист, экономящий на вводе, мог очень хорошо быть кошмаром обслуживания следующего программиста. Я сказал бы, просто выводят дженерик правильно, как так многие здесь сказали. Это более чисто и более детальное описание намерения Вашего кода, и это поможет программисту обслуживания. (Кто мог бы быть Вами, шестью месяцами и четырьмя новыми проектами в будущем!)