Чистый код паттерны проектирования Олег Антонов Senior Web Developer MobiDev Corporation.

Презентация:



Advertisements
Похожие презентации
Лекция 8 Обзор паттернов проектирования (Design patterns)
Advertisements

Что такое паттерны (шаблоны) проектирования? Эффективные способы решения характерных задач проектирования Обобщенное описание решения задачи, которое.
Объекто-ориентированное проектирование Паттерны проектирования. 28 февраля 2008 г. 4 курс Технологии программирования.
Организация программного кода при создании информационных систем Подготовил: Студент группы МЭК-21 Акименко В. И. Руководитель: Доц. Яровенко А. Н.
Паттерны проектирования «Facade» Никольский Кирилл 245 группа.
Программная инженерия Дмитриев Андрей Владиславович 2008.
Технология разработки программного обеспечения (вторая часть) Принципы проектирования проф. каф. ОСУ Тузовский А.Ф. Лекция 6.
Трехслойная архитектура приложений, основанных на использовании баз данных.
Лекция 5. ПАТТЕРНЫ И ФРЕЙМВОРКИ В АРХИТЕКТУРЕ ИС Учебные вопросы: 1. Паттерны 2. Антипаттерны 3. Фреймворки 4. Примеры фреймворков.
Лекция 5 Способы конструирования программ. Основы доказательства правильности.
Презентация по программе Программирование на языке С/С++
D7: проектирование и реализация нового модуля «Диск» Алексей Кирсанов Ведущий программист «1С-Битрикс»
Структурный подход к программированию Подготовила студентка группы Э-108 Правилова Анастасия.
МФ НОЦ «ПОЛИТЕХНИК-SAP» МАЦК «Политехник-SAP» Презентация программы ДПО Никита Головин руководитель центра, к.т.н. Антон Амбражей.
Сергей Сыроежкин Бизнес-аналитик, консультант В рамках курса лекций: «Разработка требований к программному обеспечению», мехмат, БГУ Спецификация.
Алексей Кирсанов ведущий разработчик «1С-Битрикс» Магазин – глобальная реструктуризация. D7 Партнерская конференция «1С-Битрикс»
Методология проектирования RAD МДК Раздел 1.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Основы объектно-ориентированного программирования (ООП)
1 ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ COM- ТЕХНОЛОГИИ ДЛЯ ПОСТРОЕНИЯ РАСПРЕДЕЛЕННЫХ ПРОГРАММНЫХ ПРОДУКТОВ Component Object Model Министерство образования и науки.
Транксрипт:

чистый код паттерны проектирования Олег Антонов Senior Web Developer MobiDev Corporation

План семинара ООП и Чистый код Паттерны проектирования Преимущества и недостатки паттернов Применение паттернов Подведение итогов

Признаки плохого кода дублирование кода; длинный метод; большой класс; длинный список параметров; избыточные временные переменные; классы данных; несгруппированные данные.

Причины возникновения плохого кода Частые изменения в требованиях, противоречащие исходной архитектуре; недостаточно времени сделать работу качественно; глупый менеджер/начальник/заказчик и т.д. Ваш вариант.

Настоящие причины возникновения плохого кода Непрофессионализм Лень

Закон Леблана «Потом равносильно никогда»

Чистый код «Я люблю, чтобы мой код был элегантным и эффективным. Логика должна быть достаточно прямолинейной, чтобы ошибкам было трудно спрятаться; зависимости – минимальными, чтобы упростить сопровождение; обработка ошибок – полной, в соответствии с выбранной стратегией; а производительность – близкой к оптимальной, чтобы не искушать людей загрязнять код беспринципными оптимизациями.» Бьерн Страуструп автор языка C++

Приемы чистого кода Именование переменных; правильная работа с функциями; комментирование кода; форматирование; обработка ошибок; тестирование.

Объектно-ориентированное проектирование Проектирование объектно-ориентированных программ – нелегкое дело, а если их нужно использовать повторно, то все становится еще сложнее. Эрих Гамма Автор книги Design Patterns

Правильный дизайн Правильный дизайн – это гибкий и пригодный для повторного использования дизайн. Он должен, с одной стороны, соответствовать решаемой задаче, с другой быть общим, чтобы учесть все требования, которые могут возникнуть в будущем.

Паттерны проектирования Паттерн проектирования повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Классификация паттернов Порождающие (Creational) Структурные (Structural) Поведенческие (Behavioral)

Порождающие паттерны Порождающие паттерны паттерны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Паттерн, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а паттерн, порождающий объекты, делегирует инстанцирование другому объекту.

Виды порождающих паттернов Абстрактная фабрика (Abstract Factory) Строитель (Builder) Фабричный метод (Factory Method) Прототип (Prototype) Одиночка (Singleton)

Абстрактная фабрика Абстрактная фабрика паттерн, порождающий объекты. Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов не специфицируя их конкретных классов.

Абстрактная фабрика

Плюсы и минусы Изолирует конкретные классы; упрощает замену семейств продуктов; гарантирует сочетаемость продуктов; поддержать новый вид продуктов трудно.

Структурные паттерны Структурные паттерны паттерны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.

Виды структурных паттернов Адаптер (Adapter) Мост (Bridge) Компоновщик (Composite) Декоратор (Decorator) Фасад (Facade) Приспособленец (Flyweight) Заместитель (Proxy)

Компоновщик Компоновщик паттерн проектирования, относится к структурным паттернам, объединяет объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам обращаться к отдельным объектам и к группам объектов одинаково.

Компоновщик

Плюсы и минусы Определяет иерархии классов, состоящие из примитивных и составных объектов; упрощает архитектуру клиента; облегчает добавление новых видов компонентов; способствует созданию общего дизайна.

Поведенческие паттерны Поведенческие паттерны паттерны проектирования, определяющие алгоритмы и способы реализации взаимодействия различных объектов и классов.

Виды поведенческих паттернов Цепочка обязанностей (Chain of Responsibility) Команда (Command) Интерпретатор (Interpreter) Итератор (Iterator) Посредник (Mediator) Хранитель (Memento) Наблюдатель (Observer) Состояние (State) Стратегия (Strategy) Шаблонный метод (Template Method) Посетитель (Visitor)

Наблюдатель Наблюдатель поведенческий шаблон проектирования. Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии.

Наблюдатель

Плюсы и минусы Абстрактная связанность субъекта и наблюдателя; поддержка широковещательных коммуникаций; неожиданные обновления.

Инверсия управления Инверсия управления (Inversion of Control) принцип программирования, который уменьшает связанность между программными компонентами.

Принципы инверсии управления Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа модулей должны зависеть от абстракций; абстракция не должна зависеть от реализации. Реализация должна зависеть от абстракции.

Внедрение зависимости Внедрение зависимости (Dependency Injection) процесс предоставления внешней зависимости программному компоненту. Является специфичной формой «инверсии управления», где изменение порядка связи является путём получения необходимой зависимости.

Преимущества внедрения зависимости Ослабление соединения между классами; создание кода, который лучше поддается проверке; упрощение тестирования.

Виды внедрений зависимости Constructor injection Setter injection Interface injection

Без внедрения зависимости

Constructor Injection

Setter Injection

IoC-Контейнер IoC-контейнер это класс, библиотека или фреймворк, который позволит упростить и автоматизировать написание кода с использованием подхода инверсии управления.

IoC-Контейнер

Вывод Применяйте паттерны проектирования

Заблуждение 1 Паттерны гарантируют возможность повторного использования программного обеспечения, повышение производительности, отсутствие разногласий и т.д.

Заблуждение 2 Паттерны предоставляют готовые архитектурные решения

Заблуждение 3 Паттерны предназначены для объектно-ориентированного проектирования и реализации

Преимущества паттернов проектирования Использование предыдущего опыта экспертов. Улучшение взаимопонимания разработчиков. Альтернатива документации приложений. Упрощение реструктуризации системы.

Спасибо за внимание