Заметки на тему чистой архитектуры 2
Горизонтальные уровни софта, это разделение по функциям. В книге рекомендуется создавать классы которые изменяются по одной причине и группировать классы в компоненты которые так же изменяются по одной причине. В примере со студентами и преподами. Мы кладем функции которыми пользуются преподаватели в один компонент, а функции которыми пользуются студенты в другой компонент. И так делаем на всех уровнях приложения. Таким образом если потребуется изменить способ расчета успеваемости студента. Это никак не заденет график отпусков препода. Ведь эти функции будут лежать в разных, независимых модулях. Таким образом, выполняя горизонтальное и вертикальное деление мы получаем структуру, в которой часто меняющиеся вещи находятся внизу. Их будет легко изменить, так как от них зависит минимальное количество компонентов. А редко меняющиеся вещи располагаются наверху. Их изменение принесет много боли и страданий, поэтому их нужно сразу сделать хорошо. Отсюда следует что проектирования приложения надо начинать сверху. 1. Сначала создать базовые классы 2. Затем описать функции приложения 3. Определить способы взаимодействия с внешним миром 4. Создать адаптеры для баз данных и UI 5. Создать базы, и интерфейс
В итоге должно получиться сильное и независимое приложение. А выбор базы данных или библиотеки для вывода можно отложить до самого последнего момента, что дает пространство для маневра.