@Urukhayy

Как выбирать направление архитектуры ООП приложения?

Если требуется реализовать какое-то приложение, то какой из множества способов архитектуры выбирать?
Даже какое-то событие в этом приложении (event) можно реализовать и как отдельный класс-синглтон, и как просто поле в другом классе, и как enum, и как полиморфный класс для множества событий.
Есть ли практики, которым следует придерживаться, чтобы сделать правильную и простую архитектуру?
  • Вопрос задан
  • 442 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
и как отдельный класс-синглтон


Зачем? Зачем сингелтон? Ответте на вопрос когда это нужно?

Есть ли практики, которым следует придерживаться, чтобы сделать правильную и простую архитектуру?


- Разделение ответственности - важный принцип инженерного дела в принципе.
- Принципы SOLID - хорошо дают понять как работать с зависимостями и делать декомпозицию системы. Сильно пересекается с инкапсуляцией, полиморфизмом и разделением ответственности.
- Паттерны GRASP - эдакая смесь принципов и паттернов, описывают нюансы цикла жизни объектов и их взаимодействия друг с другом.
- Закон Деметры - про инкапсуляцию.
- CQRS - подход по разделению операций записи и операций чтения. Естественно подход такой не работает если вам надо реализовать атомарную запись и чтение, но это минимальный набор задач.
- Рефакторинг. Он нужен всегда. Его нужно делать по чуть-чуть когда видно что "уже мешает" или "можно было сделать лучше". Ну то есть это не переписывание всего и вся большими кусками, а маленькие изменения которые с течением времени эволюционно меняют архитектуру проекта. Возможно только если код покрыт тестами, это отдельная жирная тема.

Не нужно знать "архитектуры", они являются лишь результатом соблюдение принципов. И уж тем более "паттерны" это лишь элементы архитектуры. Не нужно на них зацикливаться, это лишь словарь.

https://en.wikipedia.org/wiki/Category:Programming...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bnytiki
Простите, вы только что написали нечто вроде -

Как лечат людей, как выбирают какие лекарства давать, какие назначать анализы.
Этому люди учатся в медицинских ВУЗах годами, затем интернатура, ординатура...

Практики наверно есть.
Но я их не знаю.

После 20 лет опыта это все происходит так:

Ну ты просто представляешь что там происходит внутри программы и понимаешь как нужно разделить на части и на какие именно части и к чему приведет выбор того или иного варианта.

Просто логически размышляешь - и решаешь.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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