Professional Documents
Culture Documents
Итератори
Итератори
Работа с обекти
Итератори.Добри практики за писане
на код.
Итератори.Същност и класификация
Дефиниция:Итераторите са обобщение на указателите:
-Те са обекти, които сочат други обекти;
-Итераторите позволяват да преминават елементи;
-В определен момент итераторът сочи един обект от контейнера, в следващият момент
следващият и т.н.
-Позволяват на програмиста да работи по еднакъв начин с различни обекти, съхранени в
контейнери.
Предназначение:Итераторите са елемент на обобщеното програмиране и обобщените
алгоритми
-Като аргументи на обобщените алгоритми;
-Итераторите определят начина, по който ще се осъществи достъпът до обектите в
контейнера;
-Обобщение на указателите
Шаблони в проектирането (Design Patterns)
Общовалидни повторяеми решения на обичайни проблеми в софтуерния дизайн
Предоставят тествани и доказани в разработката модели
Подпомагат четливостта на кода за разработчици, вече запознати с тези
шаблони
4
IEnumerable<T>
Основенинтерфейс в .NET, позволяващ просто обхождане на
колекция
Съдържаедин-единствен метод GetEnumerator(), който
връща един IEnumerator<T>
Клас,
реализиращ IEnumerable<T> може да бъде използван за
обхождане с цикъла foreach
Енумераторът представлява итератор. Енумераторите се
използват чрез извикване на метода GetEnumerator() на обект
който имплементира IEnumerable интерфейс.
5
IEnumerator<T>
Предоставя последователно, еднопосочно обхождане на колекция от произволен тип
Методи
MoveNext() – премества итератора към следващия елемент в колекцията.
Reset() – връща итератора на началната му позиция
Свойства
Current – връща елемента от колекцията, който е на текущата позиция на
итератора
Пример: IEnumerator<MyType> iter = list.GetEnumerator();
while (iter.MoveNext())
{
Console.WriteLine(iter.Current);
}
6
Yield Return
Указва, че методът, в който се появява, е итератор
Опростява реализацията на IEnumerator<T>
Връща един елемент за всяко повторение на цикъла
.NET 2.0 Framework позволява на C# да представи итератор
който има функционалността на генератор чрез конструкцията
yield return.
7
Params
Приема променлив брой параметри
Само една params команда е допустима в декларацията на метод
Трябва винаги да е последна
8
Итератори
IEnumerable<T> интерфейса позволява просто обхождане на колекция с
цикъл foreach
IEnumerator<T> интерфейсa предоставя методите за обхождане на
колекцията
yield return връща отделния елемент от колекцията
Params приема променлив брой параметри
9
Именуване на идентификаторите
Идентификатори са имената на класове, интерфейси, изброими типове,
анотации, методи и променливи. В C# и в много други езици имената на
идентификаторите се избират от разработчика. Имената не трябва да
бъдат случайни. Те трябва да са съставени така, че да носят полезна
информация за какво служат и каква точно роля изпълняват в съответния
код. Така кодът става по-лесно четим.
Когато именуваме идентификатори е добре да си задаваме въпроси:
Какво прави този клас? Каква е целта на тази променлива? За какво се
използва този метод?
Именуване на идентификаторите
Добри имена са: FactorialCalculator, studentsCount, Math.PI,
configFileName, CreateReport
Лоши имена са: k, k2, k3, junk, f33, KJJ, button1, variable, temp, tmp,
temp_var, something, someValue
Изключително лошо име на клас или метод е Problem12. Някои
начинаещи програмисти дават такова име за решението на задача 12 от
упражненията. Това е изключително грешно! Какво ще ви говори името
Problem12 след 1 седмица или след 1 месец? Ако задачата търси път в
лабиринт, дайте име PathInLabyrinth. След 3 месеца може да имате
подобна задача и да трябва да намерите задачата за лабиринта. Как ще я
намерите, ако не сте й дали подходящо име? Не давайте име, което
съдържа числа – това е индикация за лошо именуване.
Избягвайте съкращения
Имената на променливите трябва да са разбираеми без предварителна подготовка. Поради тази причина не е добра идея
да се премахват гласните от името на променливата с цел съкращение – btnDfltSvRzlts не е много разбираемо име.
Най-важното е, че каквито и правила да бъдат изградени за именуване на променливите, те трябва да бъдат
консистентно прилагани навсякъде из кода, в рамките на всички модули на целия проект и от всички членове на екипа.
Неконсистентно прилаганото правило е по-опасно от липсата на правило въобще.
Оператори
Операторите позволяват обработка на примитивни типове данни и обекти.
Те приемат един или няколко операнда и връщат някаква стойност.
Оператори
Използване на оператори: