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

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

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

Этих книг вам будет достаточно, чтобы ориентироваться в проектировании приложений, всё остальное решает практика. Рисуйте схемы, концентрируйтесь на ответственности компонентов и их интерфейсах, учитесь отбрасывать ненужные детали реализации.
Ответ написан
Привет! Обе книги из топика отличные и хорошо переведены. Что касается паттернов - их проблема в том, что многие примеры высосаны из пальца (а иначе никак). Изучая паттерны, у новичков возникает обычно две проблемы: 1) о, я понял как это работает, надо запихнуть этот паттерн тут, здесь, там 2) я не понимаю где вообще это можно использовать. Обе проблемы возникают из-за нехватки реального опыта. Лично я эту книгу изучал раза три с промежутками в год. И с каждым разом вышеописанных проблем становилось меньше и меньше. По поводу Крэга Лармана: я считаю эту книгу надо читать если Вы решили шагнуть на следующий уровень, уже имея как минимум 3+ года опыта. На Вашем месте я бы в фоне конечно изучал всякие абстрактные приёмы, паттерны, но основной упор сделал бы на изучение лучших практик именно в вашей области разработки, ведь именно они в будущем и будут рассеивать непонимание тех же самых паттернов.
Ответ написан
qonand
@qonand
Software Engineer
Не стоит путать паттерны и проектирование. Да паттерны используются в проектировании систем, но они сами по себе не есть проектирование. Очень часто люди прочитают пару книжек по паттернам и начинают их использовать где нужно и где не нужно и считают что все их система имеет хорошую архитектуру - но в результате от такой "архитектура" возникает больше проблем чем пользы. Поэтому мой Вам совет отложите паттерны на потом: почитайте что-нибудь именно о проектировании, и его принципах. Хотя бы того же Роберта Мартина. Бесспорно обе книги стоит прочитать, но как по мне их нужно читать имея уже определенные навыки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы