• С какой книги начать изучение проектирования по?

    @nexus478
    Проектирование приложений можно условно разбить на 2 уровня:
    1. Уровень проекта.
    Сюда входит понимание того, как приложение должно выглядеть в целом и из каких компонентов состоять, а также по каким принципам оно собирается взаимодействовать с внешним миром (если есть такая необходимость). Компоненты зависят от выбранной архитектуры - в случае монолитного приложения вам требуется понимать, как разбивать его на слои и в чем ответственность каждого слоя; в случае микросервисов вы также должны понимать, как очерчивать зоны ответственности и определять протоколы взаимодействия между ними.
    Книги о том, как проектировать приложения на общем уровне:
    1. Роберт Мартин. Чистая архитектура - очень короткая и простая книга, рекомендую начать с неё.
    2. Эрик Эванс. Предметно-ориентированное проектирование (принципы + стратегические шаблоны).
    3. Мартин Фаулер. Архитектура корпоративных приложений (часть 1).

    Уровень 2. Уровень модулей (классов).
    Когда вы спроектировали компоненты, из которых состоит ваше приложение, теперь надо спроектировать их внутренности - то есть разбить на более мелкие и конкретные модули. Тут вам пригодятся принципы объектно-ориентированное проектирования, принципы SOLID, паттерны.
    Книги по уровню 2.
    1. Банда четырех. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. Тут важно не только сами паттерны, но принципы, по которым они строятся. Концентрируйтесь на принципах.
    2. Роберт Мартин. Принципы, паттерны и методики гибкой разработки на языке C#. Тут более подробно рассматривается объектно-ориентированный дизайн и принципы SOLID в сравнении с его "Чистой архитектурой".
    3. Эрик Эванс. Предметно-ориентированное проектирование (тактические шаблоны).
    4. Мартин Фаулер. Архитектура корпоративных приложений (часть 2).
    5. Стивен Макконел. Совершенный код (сконцентрируйтесь на понимании Главного Технического Императива!).

    Этих книг вам будет достаточно, чтобы ориентироваться в проектировании приложений, всё остальное решает практика. Рисуйте схемы, концентрируйтесь на ответственности компонентов и их интерфейсах, учитесь отбрасывать ненужные детали реализации.
    Ответ написан
    Комментировать