Порекомендуйте источники по алгоритмам проектирования приложений?

Порекомендуйте книги\курсы\ресурсы (лучше видео) по объектно-ориентированному программированию\проектированию.
Проблема такая, нужна методология разбивки задачи до классов. Например, стоит задача написать компьютерную игру\социальную сеть\мобильное приложение. При помощи какого алгоритма можно формализовать задачу и разбить до классов?
Только не нужно рекомендовать базовые книги по ООП – наследование\полиморфизм\инкапсуляция – это не то – подход инструментарный. Паттерны проектирования – уже лучше, но опять немного не то. UML – ближе, но как-то слишком глобально и трудоёмко (или я не там искал).
Аналогичная технология есть в базах данных. Есть правила (нормальные формы) для разделения данных по таблицам. Бери и пользуйся.
Если метафорически, мне нужен не состав кирпичей, а алгоритмы проектирования домов.
  • Вопрос задан
  • 601 просмотр
Решения вопроса 1
@maxtm
Make money, not job
К сожалению, материалов посоветовать не могу, но напишу небольшую заметку из своего опыта.

Первое, ваше приложение/игра/сервис должен быть разбит на логические блоки.
Метод дробления - бизнес-задачи, логически разные задачи, зоны ответственности.
Эти блоки могут быть названы компонентами, модулями, и т.п.

Далее, нужно разбить модули на составные части, еще не классы - скорее "сервисы".
Каждый сервис должен обслуживать одну логическую часть системы, например - обработка платежей, или регистрация пользователей.
Сам сервис может быть представлен целым пакетом классов, библиотек и т.п., главное - у него один вход (интерфейс, класс). Сервисы могут взаимодействовать между собой через внутренне API. Но чем ниже уровень связанности - тем лучше.
Сервис не должен работать с каким либо видом вывода - он должен предоставлять исключительно программный API.

Далее, имея начальную декомпозицию по сервисам - можно дробить далее каждый сервис в отдельности, если это уместно и/или возможно до уровня классов/интерфейсов.

После, вы получаете некий список (на бумаге) модулей, сервисов, классов.
Имея это Вы можете легко начать разработку фронтенда - будь-то контроллеры, обертка в виде REST-api и т.п.

Как организовать морду - отдельный вопрос, и зависит от типа задачи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
который раз привожу ссылки:
ruhighload.com
https://refactoring.guru/ru
optimization.guide

Пользуйтесь поиском.
Ответ написан
Ваш ответ на вопрос

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

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