ОПИСАНИЕ
Design patterns or how to write clean code in OOP and Functional worlds by Evgeny Borisov
Преамбула
Сказка о лихом программисте
(Все события и герои не вымышлены — любые совпадения с реальностью не случайны)
В одной корпорации, страховой ориентации
Был департамент IT, а в нём программист, бесценный почти.
Любое задания выполнял как будто заранее,
На хороший дизайн он правда не покушался,
Даже copy-paste ничуть не гнушался.
Вот как-то раз дали ему на заказ
Написать один сервис впрок,
Чтоб страховой полис подсчитать мог
Принимая во внимание:
Водителя возраст, стаж и уголовные показания.
Скоро сказка сказывается, но еще быстрее код набирается,
Особенно когда программист дизайном хорошим не марается.
Работает сервис, и ладно, а что в конструкторе семь аргументов не так уж накладно.
Подумаешь все они целые числа! Ведь рядом стоит комментарий некислый…
Реальная история
На этом сказка заканчивается и начинается суровая реальность. Спустя 10 месяцев другой программист написал очередной экран под этот сервис и перепутал порядок аргументов (рано или поздно это должно было случиться).
В результате этой ошибки стоимость полиса упала на 92 процента. QA не заметили дефекта, ведь на сервис никто не смотрел, он существовал уже почти год без изменений. Тестировали только функциональность нового экрана.
Код попал к реальным пользователям и хотя они заподозрили неладное, никто не сообщал о проблеме. Клиенты радовались нереальной скидке, а продавцы получали тучу бонусов за подскочившее количество продаж. В итоге, до конца квартала компания потеряла больше 100 тысяч евро. Внимание, вопрос: КТО ВИНОВАТ?
Обычно всё валят на QA. Кто-то может винить безалаберного разработчика экрана. Но прав будет тот, кто скажет, что виноват автор сервиса. Ошибиться может любой, но писать код, который является платформой для дефектов – это непрофессионально.
Что вы узнаете на тренинге
Данный тренинг отличается от привычных всем тренингов по шаблонам проектирования, он основан на реальных примерах, на чужой боли и суровом опыте. Здесь вы не столкнетесь с нудной теорией, которая редко применяется на практике.
Вы будете решать реальные задачи, с которыми сталкивается почти каждый программист. Будут обсуждаться как правильные, так и неправильные шаблоны, названия которых будут озвучены только после того, как качественный код будет написан.
С этого тренинга вы унесете чужой жизненный опыт и собственноручно написанный красивый код, которым можно гордиться.
Конечно мы будем пользоваться восьмой джавой и все паттерна будем писать с учётом возможностей лямд и прочей фунциональщины
День 1
Принципы правильного кода
Java оптимизации + правильный код = хорошая производительность
Антипаттерны
Callback method / closure / lambda
Java 8 functional style
Switch as anti-pattern
Command and enum pattern
Как Reflection может нам помочь
Garbage collection + immutable objects
Builder
А что думает по этому поводу товарищ Lombok?
Strategy
Adapter
Iterator
День 2
Как написать хороший framework (будет писать свой Spring)
Singleton
Factory
Chain of responsibility
Dependency injection
Inversion of control
Proxy
Decorator
Observer