> сходу замечание: агрегат game, который содержит всех игроков, Это просто пример для описание проблемы > зачем вообще getPlayers метод у аггрегата делать публичным? Репозиториям нужно как-то получить значение чтобы замаппить в бд. Ну и плюс если у меня состояние объекта будет приватным, то я не смогу юнит тестировать поведение
да, обычно решается разделением агрегата на агрегаты поменьше)
вопрос еще актуален
если состояние не часть публичного интерфейса объекта, то и тестировать через него не стоит, потому что это будет связывать тест с реализацией, а не с публичным поведением, что может усложнить рефакторинг(придется менять и тест тоже) Тестировать тогда стоит через публичные методы описывая то поведение, на которое это состояние должно влиять. В приведенном примере вместо проверки стейта игроков, можно проверять условия завершения игры(что-то вроде первый игрок 100 раз походил и победил)
Стат. анализ. Определение доступности методов конкретным пакетам
Это в джаве так можно?
А как определить какое состояние является частью публичного интерфейса?
В джаве это компилятор умеет Стат анализ там, где не умеет
А можешь конретно указать язык и конструкцию этого языка, которая решит эту проблему?
PHP psalm-internal tag https://psalm.dev/docs/annotating_code/supported_annotations/
Спасибо, посомтрю
Обсуждают сегодня