@Leopandro
Разработчик CRM/ERP систем

Как избежать быдлокода или как отрефакторить это?

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

Туц
(сюда не смог поместить, т.к. пишет что больше 10к символов хотя там меньше)

Все ли хорошо с моим кодом? по-моему класс перегружен и код нечитабелен, да и написан на пхп :)

P.S. думаю мой код достоин того чтобы его разместили на govnokod.ru :)

//Может быть мне нужно научиться проектировать по как следует?
  • Вопрос задан
  • 710 просмотров
Пригласить эксперта
Ответы на вопрос 3
@MNB
Как минимум вынести всю экселвскую хрень куда-нибудь.
Выделить повторяющиеся куски (см getLabelsOnly и getLabels)
Ответ написан
Sassoft
@Sassoft
Yii developer
Как вы под такой класс будете писать юнит тесты??
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
У вас модель AR.
Сразу понятно, что кусок, отвечающий за формирование Excel вообще не к месту.
Дальше видно, что есть "жирные" методы с кучей if-then-else, простирающиеся не на 1 экран. Это тоже намек на рефакторинг. Для начала попробовать делать refactor->extract (в Phpstorm), чтобы сделать код более читаемым. Дальше возможно станет ясно потребуются ли новые классы под какие-нибудь сущности.
В логику кода не вникал особо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы