Количество методов в классе, количество строк.

DIG

Новичок
Партнер клуба
Назрел простой вопрос.
Есть класс - контроллер, в нем уже 15 методов и более 600 строк кода (комментариев ~50 строк).
Дальше добавится еще столько же строк и методов, или больше.
Нужно разносить по нескольким контроллерам?
Может достаточно вынести бОльшую часть кода в модели?

Контроллер отвечает на мой взгляд за одну сущность - заказ и построен так что каждый метод отвечает за действие с заказом (заказ/открыть, заказ/запустить, заказ/подтвердить и т.д.)
function action_open()
function action_start()
function action_confirm()
и т.д. и т.п.

И с заказом будет происходить еще уйма действий и на каждое соответственно свой метод.
Вопрос скорее теоретический т.к. проект не нагруженный и я могу хоть миллион строк впихнуть в один контроллер и хоть 100 методов, но это же не правильно.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Почему не правильно? Ответишь на этот вопрос и все будет проще. А если тебе просто кажется, что не правильно, то думать об этом не стоит.

PS: У меня контроллеры по 3-4к строк есть. Сделал вложенные контроллеры с наследованием. Ничего не поменялось кардинально после этого ;)
 

DIG

Новичок
Партнер клуба
Духовность™
какой смысл делать контроллер с кучей экшенов?
Не понял вопроса. Я пользую кохану, в ней так принято чтоли...

c0dex
Убедил, пока не буду заморачаваться количеством строк и методов.
 

Духовность™

Продвинутый новичок
Контроллер - это лишь элемент связи между запросом, моделью и ответом. Он должен быть тонким. Вся бизнес-логика в моделях. Нет вообще смысла делать контроллеры с кучей методов, на каждую конкретную страницу приложения должен быть свой контроллер, который extends от базового контроллера модуля (заказ, например) и abstract контроллера.
 

fixxxer

К.О.
Партнер клуба
Контроллер с 3-4 к строк это какой то говнокод )

У меня в сумме все контроллеры со всех проектов которые я делал в последние пару лет это строк 500 ;)
 

Ragazzo

TDD interested
Духовность™
Krugozor_Controller ? :D Ну вообще не желательно делать слишком длинные экшены контроллеров чтобы они не стали ТТУК'ами, ну и плюс пока мотаешь портянку, уже забываешь что там вначале было)
DIG
Впринципе ничего я думаю тебе не мешает выделить пару сущностей, чтобы все таки у тебя было примерно 1контроллер == 1 сущность, т.к. в основном это базовый CRUD ведь, так будет легче)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer
Для нашего приложения это нормально. У нас приложение огромное, там логики очень уж много =( Это если не считать что есть еще модели... Есть API-контроллеры для IPad приложений...

Да и рабочий процесс построен неверно. Чистим как можем ненудное, но до идеала пока далеко(
 

fixxxer

К.О.
Партнер клуба
В сложных приложениях имеет смысл вводить в mvc 4-ю сервисную прослойку между контроллерами и моделями. Я так всегда делаю за исключением совсем простых приложений.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer
Увы такой рефакторинг требует времени, а у нас его нет =р Специфика работы у меня такая. Лабать и успевать делать, чтобы не тормозило.
 
  • Like
Реакции: AmdY

fixxxer

К.О.
Партнер клуба
Я в контексте вопроса, о том, что это нифига не good practice. А так-то у меня тоже дерьмеца хватает =)
 

Ragazzo

TDD interested
Духовность™
Krugozor_Module_Advert_Controller_FrontendCommon :D еще больше можно?) 1251 везде, комменты не читаются)
fixxxer
прослойка?HMVC?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
вполне себе нормал практис, если приложение уровня какой-нибудь коммерческой CRM. Конечно с вложенными контроллерами удобней работать, знаешь сразу какой файл открыть и не надо много скроллить/искать. Но это пока для нас мечты.
 

Yuriy_S

-=PHP-Club=-
Если проект небольшой и с ним работает 1-2 кодера - можно по этому поводу даже не париться, красиво или некрасиво. У меня контроллеры от 50 до 300-400 строк.
 

Dovg

Продвинутый новичок
Есть еще хороший паттерн Command. Сложную логику можно инкапсулировать в команды, а контроллеры их будут просто вызывать. Получается достаточно реюзабельно - мы так делаем для тех сущностей, которые могут редактироваться из разных мест интерфейса.
 

DIG

Новичок
Партнер клуба
Духовность™
В общем я вас понял, мне нравится идея "один контроллер" = "одна страница" и я раньше так и поступал (правда в тот же контроллер писал и экшены вызываемые аяксом с этойже страницы).
Эта ситуация возникла у меня из за того что я просто изучая кохану и jqgrid незаметно для себя написал программу которая понравилась людям, ей захотели пользоваться и потребовалось её дописать. (Ну бывает такое - сядешь на клавиатуру, поёрзаешь и - бац! сами знаете что получилось).

Спасибо всем за советы, для этого проекта думаю достаточно будет вынести максимум возможного в модели, что уменьшит размеры файла в разы, ну а количество методов думаю не критично, даже если их будет 30 штук.
 

Absinthe

жожо
Контроллеры по 30+ строк - это не MVC, а "наличие шаблонизатора и роутера".
 

Yuriy_S

-=PHP-Club=-
Absinthe
Аргументируйте пожалуйста свое мнение.
Много форумчан пишут какие-то аксиомы, а реальных аргументов и обоснований никто привести не может.
 
Сверху