slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
чистый код PowerPoint Presentation
Download Presentation
чистый код

Loading in 2 Seconds...

play fullscreen
1 / 57

чистый код - PowerPoint PPT Presentation


  • 213 Views
  • Uploaded on

чистый код. паттерны проектирования. Олег Антонов. Senior Web Developer. MobiDev Corporation. План семинара. ООП и Чистый код Паттерны проектирования Преимущества и недостатки паттернов Применение паттернов Подведение итогов. Признаки плохого кода. дублирование кода; длинный метод;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'чистый код' - channer


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

чистый код

паттерны проектирования

Олег Антонов

Senior Web Developer

MobiDev Corporation

slide2
План семинара
  • ООП и Чистый код
  • Паттерны проектирования
  • Преимущества и недостатки паттернов
  • Применение паттернов
  • Подведение итогов
slide3
Признаки плохого кода
  • дублирование кода;
  • длинный метод;
  • большой класс;
  • длинный список параметров;
  • избыточные временные переменные;
  • классы данных;
  • несгруппированные данные.
slide4
Причины возникновенияплохого кода
  • Частые изменения в требованиях, противоречащие исходной архитектуре;
  • недостаточно времени сделать работу качественно;
  • глупый менеджер/начальник/заказчик и т.д.
  • Ваш вариант.
slide5
Настоящиепричины возникновенияплохого кода
  • Непрофессионализм
  • Лень
slide6
Закон Леблана

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

slide7
Чистый код

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

Бьерн Страуструп

автор языка C++

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

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

Эрих Гамма

Автор книги Design Patterns

slide10
Правильный дизайн

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

slide11
Паттерны проектирования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внедрение зависимости (DependencyInjection) — процесс предоставления внешней зависимости программному компоненту.

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

slide43
Преимущества внедрения зависимости
  • Ослабление соединения между классами;
  • создание кода, который лучше поддается проверке;
  • упрощение тестирования.
slide44
Виды внедрений зависимости
  • Constructor injection
  • Setter injection
  • Interface injection
slide48
IoC-Контейнер

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

slide52
Вывод

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

slide53
Заблуждение №1

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

slide54
Заблуждение №2

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

slide55
Заблуждение №3

Паттерны предназначены для

объектно-ориентированного

проектирования и реализации

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