Сегодня показательный кейс у меня был. Есть объект, для работы которого требовалось Знание. И Знание это было реализовано прямо внутри объекта, потому что никому другому оно не требовалось. Если конкретнее, то реализация той подсказки, которая на картинке выше. Знание это в том, чтобы найти все поля, которые можно подсказать в реквесте. Там надо либо найти правила валидации в этом методе, либо найти кастомный реквест и у него вытащить поля.
А сегодня я работаю над кейсом посложнее - https://github.com/laravel-idea/plugin/issues/351. Там тоже понадобилось это Знание. И возник соблазн немного модифицировать тот, первый объект, чтобы он поделился этим Знанием с новым. Но я вовремя спохватился. Это настолько явный индикатор того, что надо это Знание вытаскивать в свой, отдельный объект, что лучше и не придумать. Всегда, когда вы себя ловите на подобном, надо обязательно подумать о Extract Class рефакторинге и композиции.
Post #55
2.72K





