Обложка канала

Хекслет

3227 @hexlet_ru

Хекслет - это образовательная платформа для изучения языков программирования и является одной из ведущих онлайн-школ (второе место по популярности по данным карьерного портала Мой круг). Мы обучаем профессиям JS-frontend, JS-backend, PHP-программиста, Pyt

Хекслет

3 года назад
Открыть в
Одна из краеугольных тем в программирование это состояния системы. Тема глубокая, повсеместная и ее понимание может сильно изменить взгляд на вещи. Разберемся с ней на примере страницы курса на Хекслете. Откройте для примера этот https://ru.hexlet.io/courses/js-ddd На этой странице есть описание курса, состав уроков, отзывы, справа цена кнопка и какая-то другая полезная информация. Как вы думаете, насколько сложно создать такую страницу? На первый взгляд не сложно, но самое интересное начинается в тот момент, когда мы начинаем задумываться о том, какие состояния возможны на этой странице. Возьмем кнопку справа. Что у вас там отображается прямо сейчас? Например я сейчас вижу “зарегистрироваться”. Но если я залогинюсь, то увижу уже другую кнопку, там будет что-то другое. Причем это другое тоже будет зависеть от того, вступал ли я в этот курс или нет, платил ли я за него или нет. Все это называется состояниями и особенность состояний в том, что их нужно программировать. Каждое новое состояние любого элемента на странице это дополнительная работа, это условие в коде “если это то сделай вот это”, это дополнительная поддержка кода и это дополнительное тестирование. Кнопка о которой мы говорим имеет 5 состояний! Это значит, что даже для банальной проверки, того как она выглядит, нужно проделать множество действий. А кроме кнопки на странице множество других элементов. Если уроки пройдены, то они отмечаются специальным образом. Если пользователь вступил в курс, у него добавляется сверху блок, который показывает статистику прохождения этого курса. Суммарно все это может приводить к десяткам состояний на одной странице. С точки зрения сроков разработки, стоимости поддержки и сложности тестирования, изначальная оценка вырастает сразу в несколько раз как минимум. А может даже на порядок. Помимо самих состояний, каждый переход из одного состояния в другое это программный код: вступление в курс, оплата курса, регистрация. Все это процессы, которые переводят состояния элементов на той же странице курса. И конечно же, других страницах сайта. С состояниями связана еще одна забавная история. Профессиональные программисты видят многие состояния буквально сразу, как только им обозначили задачу. Из-за этого те кто с ними работают недоумевают как, на первый взгляд, простая задача, внезапно превращается в месяц разработки.
Курс «JS: Предметно-ориентированное проектирование»: обучение онлайн, 8 уроков

JS: Предметно-ориентированное проектирование: Курс посвящен процессу создания программных абстракций — моделей предметных областей. На примере разработки онлайн-системы для продажи билетов в кинотеатр, мы рассмотрим выделение правильных сущностей, нахождение связей между ними, и поговорим о предметно-ориентированном проектировании, инверсии контроля, принципе инверсии зависимостей, конечных автоматах.

ru.hexlet.io