Принципы хорошего кода на реальных примерах

Workshop Мастер-класс 3 часa Адель Файзрахманов Make Lang + Good Code(зал №9) :   Jun 18 15:45
Адель Файзрахманов
фрилансер, Toptal. В последнее время рефакторю один хайлоад-проект. Немецкий, развлекательный, но не такой, как вы подумали. + пописываю и дописываю плагины для PhpStorm. Laravel plugin из более-менее известных.
Из проекта в проект я каждый раз вижу ИХ: результаты жертв туториалов по своим любимым фреймворкам. Магические строки в огромном количестве. Copy-paste driven development. Постоянные проверки результатов вызовов(if($order !== null)). Валидация в контроллерах, часто повторяющаяся. Ну и стандартная проблема с MVC. Ведь если View - наш любимый шаблонизатор, Model - наша любимая ActiveRecord ORM, то остаются одни контроллеры, которым и достается ВЕСЬ остальной код приложения. Иногда, разумеется, какой-то код выделяют в отдельные классы, но этого обычно крайне мало. На мастер-классе я буду разбирать реальные примеры кода, которые встречались мне на проектах, а также разные техники, которые я применял и применяю, чтобы держать код в тонусе. Да-да, тот самый KISS my DRY SOLID code, но в отличие от многих изложений, на реальных, рабочих примерах кода. Примеры будут в большинстве своем на PHP, но я постараюсь избавиться от специфики PHP и некоторые сделать на Java или C#, чтобы было интересно всем программистам ООП-языков.

Сразу предупрежу, что если вы крутой DDD-гуру, то смысла идти нет.
Примерный план мастер-класса(все может поменяться):
* Для разминки: совсем мелкие отстойности в коде и как их избегать.
* Не стесняемся использовать эксепшены.
* Валидируем данные там где надо и сколько надо.
* Совсем чуть-чуть паттернов из банды четырех.
* Насколько важна статическая типизация для качественной поддержки кодовой базы и как почти ее добиться в динамически типизируемом языке на примере PHP(Laravel).
* Как отделить домен(бизнес-логику) от всего остального - HTTP, базы данных и другой инфраструктуры. И для чего это делать. Это не совсем про DDD, но очень близко.
* Тесты. Как юнит-, так и не юнит-
Постоянная ссылка на доклад: https://devconf.ru/offer/283