2. Стиль программирования
• Единообразный подход к именованию
переменных и методов
• Единообразное оформление текста
• Грамотная декомпозиция
• Применение паттернов
• Комментирование и
самодокументируемость
5. Стив Макконелл
Автор книг:
«Совершенный код»
«Сколько стоит
программный проект»
«Руководство по
выживанию в
программных
проектах»
В 1998 признан одним из
трех наиболее
влиятельных людей
отрасли.
6. Пишите код так, как будто
сопровождать его будет склонный
к насилию психопат, который
знает, где вы живете
Мартин Голдинг, в изложении
Стива Макконела
7. Стандарты оформления кода
• Корпоративные стандарты – основа
командной разработки
• Общепринятые стандарты – видны в стиле
оформления стандартных и коммерческих
библиотек
• Используйте встроенные в IDE средства
форматирования
8. Стандарты должны описывать
• Правила именования идентификаторов
• Использование скобок
• Обязательные случаи использования
комментариев
• Требования к декомпозиции программы
• Ограничения на неочевидные конструкции
• Ограничения на свободу выбора
альтернативных конструкций
9. Если в вашей компании нет
стандарта – создайте его сами на
основе вашего стиля.
Получите очки в карму.
10. Рефакторинг
Рефакторинг – процесс изменения
внутренней структуры программы, не
затрагивающий её внешнего поведения и
имеющий целью облегчить понимание её
работы
11. Рефакторинг
• Причины рефакторинга
– Борьба с быдлокодом
– Отложенные улучшения
– Изменение взгляда на архитектуру системы
– Обеспечение дальнейшего развития системы
• Рефакторинг базируется на конечном числе
стандартных приемов и шаблонов, которые
надо знать.
12. Рефакторинг и тесты
• Успех рефакторинга критически зависит от
покрытия системы тестами
• До начала рефакторинга продумайте
стратегию тестирования методом «черного
ящика»
• Реализуйте необходимые тесты, если их
еще нет
• Не снижайте стандарты качества в процессе
рефакторинга
14. Мартин Фаулер
Автор большого
количества паттернов
проектирования, один
из соавторов UML и XP.
Вероятно, один из
крупнейших
специалистов
практиков в области
Software Engineering
нашего времени.
16. Паттерны (шаблоны)
проектирования
• Шаблон проектирования, или паттерн (англ. design
pattern) — повторимая архитектурная конструкция,
представляющая собой решение проблемы
проектирования в рамках некоторого часто
возникающего контекста.
• Шаблон не является законченным образцом кода -
это лишь пример решения типичной задачи.
• «Низкоуровневые» шаблоны, учитывающие
специфику конкретного языка программирования,
называются идиомами.
• На наивысшем уровне определяются
архитектурные шаблоны.
17. История появления паттернов
• В 1970-е годы архитектор Кристофер Александр составил набор
шаблонов проектирования.
• В 1987 году Кент Бек и Уорд Каннигем взяли идеи Александра и
разработали шаблоны применительно к разработке программного
обеспечения для разработки графических оболочек на языке
Smalltalk.
• В 1988 году Эрих Гамма начал писать докторскую диссертацию при
цюрихском университете об общей переносимости этой методики на
разработку программ.
• В 1991 году Эрих Гамма заканчивает свою докторскую диссертацию и
переезжает в США, где в сотрудничестве с Ричардом Хелмом,
Ральфом Джонсоном и Джоном Влиссидсом публикует книгу Design
Patterns — Elements of Reusable Object-Oriented Software. В этой книге
описаны 23 шаблона проектирования.
18. Читаем
Э. Гамма, Р. Халм, Р.
Джонсон, Д.
Влиссидис
«Приемы объектно-
ориентированного
проектирования.
Паттерны
проектирования»
19. Читаем
Э. Гамма, Р. Халм, Р.
Джонсон, Д.
Влиссидис
«Приемы объектно-
ориентированного
проектирования.
Паттерны
проектирования»
24. Антипаттерны
• Анти-паттерны (anti-patterns), также
известные как ловушки (pitfalls) — это
классы наиболее часто внедряемых плохих
решений проблем.
• Они изучаются, как категория, в случае
когда их хотят избежать в будущем
• Некоторые отдельные случаи их могут быть
распознаны при изучении неработающих
или проблемных систем.
28. Модульное (unit) тестирование и
TDD
• Написание теста как спецификация
будущего поведения класса
• При написании теста определяется
интерфейс класса
• Реализация выполняется в виде заглушек-
пустых методов
• Тесты изначально «красные» («падают»)
• Разработка выполняется, пока все тесты не
станут «зелеными»
29. Библиотеки xUnit
• Метод Assert
• Система хранения эталонов и сравнения с
эталонами
• Система вызова тестов
30. Профилирование и оптимизация
• Оптимизация – постоянная задача
• Следования паттернам помогает сразу
делать достаточно оптимальный код
• Оптимизация производится на базе
измерений в целевых условиях
• Ускоряйте самое медленное
• Вовремя останавливайтесь
31. Базовые приемы оптимизации
• Размен времени на память
– Дублирование информации
• Предварительная подготовка
– Замена поиска сортировкой
• Отказ от лишней работы
• Сколачивание в пакеты
34. Вопросы для реферата
• Есть ли у Вас стиль программирования?
Докажите свое утверждение
• Если бы Вы писали стандарт
программирования для своей команды, что
было бы там первым и главным?
• Самый вредный антипаттерн
• Был ли у вас пример успешной оптимизации
кода? Приведите его. Это был уникальный
прием или реализация паттерна?