Xveeder, мысль была высосана из пальца, надо полагать. Практика покажет, что объединение кода по таким надуманным принципам будет только мешать с ним работать.
Adamos, то есть, если у нас есть модуль, который выполняет некоторый бизнес-кейс, у него есть 7 сервисов. И, например, 4 связанных с сервисами фабрики, то все эти сущности нужно смешивать в одном пакете?
Xveeder, смешивать ничего не требуется. Нужно объединять то, что работает вместе. Объединять же то, что работает одинаково, никому на хрен не нужно и даже вредно. Глядя на пакет снаружи, у вас просто не должно возникать мыслей о том, КАК оно работает. Только - ЧТО делает.
Xveeder, раскладывайте по размеру файла. Тогда будет понятно где много кода, а где чуть-чуть.
Если вы задётесь таким вопросом, то вам еще рано что-то изобретать в этом плане. Прочитайте что такое S.O.L.I.D, читайте больше чужих хороших исходников, изучайте opensource проекты. Такие вопросы возникают чаще всего от малого опыта в разработке.
DollyPapper, очень даже "при чем", когда речь идёт о том, как сгруппировать фрагменты кода.
Модули и пакеты не для красоты, они тоже должны подчиняться этим принципам. А их начинают раскладывать "по цвету обложки", а не по зоне ответственности и контексту.
DollyPapper, да я, собственно, хотел просто намекнуть автору вопроса, чтобы не изобретал велосипед, а почитал уже давно придуманные концепции о том, как оранизовать код и распределить его сложность. Судя по постановке вопроса путь у топикстаретра впереди ещё огромный, SOLID пригодится.
Да можно. Но обычно объединение идет по модулям приложения. Это упрощает процесс релиза. Например если меняется что-то в модуле работы с физ-лицами - то в релиз должен пойти в лучшем случае 1 артифакт. В худшем случае тебе придется релизить сразу все модули а это хлопотно.
И потом надо тебе разобраться с тем, как в том магазине добавлена доставка СДЭКом, например - и всего-то три файлика, но в трех разных папках. Удобно...
Xveeder, собственно, если хочется снаружи класса определять его принцип работы, можно его назвать DeliveryFactory, например. Но собирать его в одной папке с PaymentFactory или StoreFactory, с которыми он ну никак не взаимодействует и никогда не будет - просто нелепо. Только потом сложнее будет поддерживать эту кучу.
При этом я вполне допускаю, что эти классы все-таки будут лежать в одной папке. Но не потому, что они все - фабрики, а по какой-нибудь более вменяемой причине.
Adamos, я, вероятно, не вполне корректно описал вопрос. Мысль как раз заключается в том, что в домене Payment создается пакет Factories внутри которого лежат разнообразные фабрики, условно, для сущности Payment. То есть, это фабрики конкретно этого домена. Не фабрики для других доменов, которые используются этим доменом, а именно фабрики только этого домена.
Xveeder, попробовал представить себе, что вы такое пишете, что у вас множество фабрик платежей. Боюсь, моей фантазии недостаточно для того, чтобы представить, как это будет использоваться - и, соответственно, рассуждать о том, как это сделать удобно и для пишущего, и для читающего. Брэк.