Проект, в котором я участвовал, имеет структуру файлов / папок ориентированного на архитектуру проекта:
Root
|____ Node1
|____ Event Handlers
| |___ <all event handlers of project>
|____ Events
| |___ <all events of project>
|____ Request Handlers
| |___ <all request handlers of project>
|____ Requests
| |___ <all requests of project>
|____ ...
Это ясно с архитектурной точки зрения системы (было предложено командой разработчиков).
Это функционально-ориентированная структура была предложена командой дизайнеров:
Root
|____ Feature #1
|____ Event Handlers
| |___ <all event handlers of Feature #1>
|____ Events
| |___ <all events of Feature #1>
|____ Request Handlers
| |___ <all request handlers of Feature #1>
|____ Requests
| |___ <all requests of Feature #1>
|____ ...
Этот вариант ближе к дизайнерам, и он четко описывает функцию, которая будет реализована.
Наши команды начали священную войну: какой подход лучше? Может ли кто-нибудь помочь нам и объяснить минусы и плюсы первого и второго. Может быть, есть третий, который более полезен и полезен для нас обоих.
Спасибо.
Ответы:
Я бы проголосовал за второй. В первой структуре обработчики событий for
FeatureA
совершенно не связаны с обработчиками событий forFeatureB
. Похоже, что разработчики будут работать над одной функцией за раз, и если вы работаете надFeatureX
запросом, гораздо более вероятно, что вам потребуется настроитьFeatureX
обработчик запроса, чем, скажем,FeatureZ
запрос.Кстати, мне нравится, как вы задали этот вопрос с нейтральной точки зрения.
источник
Мне всегда было комфортнее со вторым подходом, но у меня всегда есть «особенность», называемая общей или общей для действительно общих / базовых классов.
Подход второй позволяет разделить действительно отдельные вещи, но без «общей» области он иногда разделяет вещи на области, которые им не подходят.
источник
Почему изобретатели функций заботятся о деталях реализации? Если это разделение между сторонами аргумента, то я думаю, что ответ ясен. Люди, изобретающие идеи / функции, не определяют структуру файла, которая необходима разработчикам.
Это особенно важная проблема, когда реализация функции охватывает несколько dll, exe, баз данных или других частей программного обеспечения.
источник
Приходится соглашаться со вторым подходом, учитывая два варианта. Первый просто выглядит как аморфный шарик. По крайней мере, второй имеет некоторую форму.
Это действительно зависит от того, насколько велик проект. Если «особенности» велики, каждый из них должен иметь свое отдельное ведро.
источник
Я не понимаю терминологию, которую вы используете, но все равно постараюсь ответить, поскольку обе структуры кажутся неправильным подходом.
Если у вас есть только несколько функций, вам нужно сгруппировать их по категориям - и это не учитывается ни в одном из проектов (если только это не то, для чего предназначен Node1, но предлагает «весь X проекта») в противном случае и заставляет задуматься, WTF это - есть ли Node2?)
Я мог бы рассмотреть что-то вроде этого:
Или это:
Но они оба делают предположения, которые могут быть совершенно неверными - если вы можете обновить свой вопрос с более подробной информацией, я могу передумать. :)
источник