Pull to refresh
4
0
Дмитрий Елисеев @ElisDN

Пользователь

Send message

2) Кастомные личные проекты пишутся под себя под свои процессы, которые заранее известны. А универсальные модули тем и универсальны, что дают менять что угодно кому угодно и не смогут предусмотреть все юзкейсы в мире. Там не сможете просто так дописать код напрямую в сущность из vendor. Так что сравнивать не совсем корректно.


3) Например, магазин на Yii, доска объявлений на Laravel и менеджер проектов на Symfony. Все без сеттеров на реальном ООП с конструкторами и методами.

1) Полноценная сущность надёжно контролирует свои внутренности на своём уровне. Оркестрацией сущностей занимается внешний сервис-юзкейс. В отличие от имения набора сеттеров в сущности, с которыми другой внешний сервис может её испортить, забыв присвоить какое-нибудь поле.


2) Спокойно используется передача зависимостей в метод. Приходится протаскивать. Не синглтоны же в методе дёргать. Вместо передачи в конструктор, с которой у сущности как раз будет атата. У сущности не должно быть циклических зависимостей от внешних прикладных сервисов. А на своём доменном уровне может дёргать кого угодно.

1) Да, передаём внешнему методу весь комплект. Нам снаружи всё равно, сам он будет дело делать или приватным методам делегировать.


2) Например, метод сущности принимает интерфейс, лежащий рядом с сущностью.

Инкапсуляция – это концепция сокрытия всего личного. Чтобы каждый объект как организм жил своей собственной жизнью.

Передать зависимость в метод и там сгенерировать событие для отправки уведомления.

Тоже про это всегда говорю, что полноценными ООП-шными объектами должны быть и сущности. Но как-то тоже мало кто реально соглашается.

Если время от времени делать rebase своих веток с обзором коммитов коллег и запуском тестов, то все локальные ветки будут каждый день актуальны и готовы к практически безболезненному вливанию в мастер. И пути фич будут короткими (читать снизу вверх):


  |
  |\             # вмержили и запушили feature_2
  | |            # доделали feature_2
  |/ feature_2   # решили конфликт, передав привет коллеге из Мексики
  | |
  |/ feature_1   # подтянули висячие фичи 1 и 2
  |              # утро
  |
 /|              # коллега из Мексики вмержил своё
| |
| |              # пошли спать
| |\             # вечером вмержили feature_3
 \| | |          # ещё чуть допилили feature_2
  | |            # делаем feature_3
  |/ feature_3
  |/ feature_2   # поправили совместимость со вчерашними коммитами
  |/ feature_1   # подтянули старые фичи по git rebase master
  |              # утро

как будто каждая фича делалась один день.


Если же время от времени не актуализировать локальные ветки ребейсами, то:


  | \ \ |
  |\ \ \|        # в конце месяца получаем кучу конфликтов при мерже каждой
  | \ \ \
  | | \ |\
  | |\| | \
  |
  | ...
  |
 /| | |\|/|
| | |/| | |      # пилим, мержим и черри-пикаем master
| |/| |/| |
 \| |/| /\|
  |
  | ...
  |
  |/ feature_3
  |/ feature_2
  |/ feature_1   # начали три фичи в начале месяца
  |

Так что с rebase удобнее решать конфликты ежедневно по чуть-чуть, чем устраивать аврал раз в месяц.

Обсудили конструктивно на форуме.
2

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity