2015-06-11 3 views
1

В настоящее время я поддерживаю приложение, где, к сожалению, у нас появилось слишком много методов Action. Вдобавок к этому архитектура этого проекта не является честной с самого начала, и каждый разработчик продолжал добавлять бизнес-логику в методы действий класса Controller вместо того, чтобы сохранять ее на другом бизнес-уровне. Итак, теперь один из наших классов контроллера достиг 15000 строк кода, и я не хочу использовать этот класс еще больше, добавив еще один метод действий.Класс контроллера содержит слишком много методов

Любые предложения о том, как мы можем реорганизовать это или можем ли мы использовать какой-либо класс частичного контроллера или любой другой лучший способ?

N.B: Я знаю, что мы можем использовать тонкие контроллеры, перемещая код на другой уровень, но все же мы закончим слишком много методов.

+2

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

+0

У вас всегда может быть несколько контроллеров. Все зависит от того, что вам действительно нужно делать - вполне возможно, что вы хотите сотню различных действий на одном контроллере, и все в порядке. Но, возможно, вы обнаружите, что действия действительно не принадлежат друг другу, и вы можете отделить исходные контроллеры несколькими. – Luaan

+1

Я не вижу причин, по которым вы не могли написать частичные классы для контроллера. Я никогда не пробовал, но в конце концов, это просто класс, как и любой другой, не так ли? Но на самом деле это не решает вашу проблему, потому что в intellisense, класс-проводнике и т. Д. Он все равно покажет весь большой список. Думаю, ты знаешь ответ в своем сердце. Время для начала рефакторинга в разные, меньшие, сосредоточенные контроллеры и, возможно, смотреть видео Pluralsight на SOLID, прежде чем вы начнете. И будьте готовы к этому несколько недель ... – bgs264

ответ

5

15 000 линий, jeez.

Помимо того, что вы, очевидно, заявили о переносе кода на бизнес-уровень (что вам следует делать), я также хотел бы рассмотреть возможность формирования логических групп тех методов действий, которые принадлежат определенному набору функций.

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

+0

Замечание по группировке ваших контроллеров/действий, если это устаревшее приложение (некоторое время находилось в дикой природе), вам необходимо принять во внимание контроллер/действия, которые вы перемещаете, и создать перезаписи URL или обновить таблицу маршрутов, чтобы ваш старый URL-адреса не прерываются. Достаточно легко сделать, но если вы этого не сделаете, вы можете повлиять на людей с закладками и/или рейтингами поисковых систем в краткосрочной перспективе. – Tommy

+0

Спасибо @mattytommo, да, это устаревшее приложение, и это похоже на подход, учитывающий время, и добавит к стоимости и времени. Я искал, так же быстро, как часть класса, чтобы реализовать на время. – Maninder

+0

@Maninder - вам нужно что-то начать, если вы хотите, чтобы ваше приложение обновлялось. Почему бы не начать с того, чтобы разработчики начали добавлять новые функции в новый/более стандартный способ (бизнес-уровень и т. Д.) И со временем реорганизовать проблемный контроллер (ы) в более значимые логические группы? За исключением уменьшения размера файла, создание частичного класса действительно не покупает вам много ИМХО. – Tommy

Смежные вопросы