Разбить God class? Здравствуйте. Написал пакет для парсинга документации, в результате всю работу делает один "God class". Некоторые методы просто огромны. Вот пример метода: тык
Трейты - не выход, так как нормальной поддержи автокомплита у них нет (только паблик свойства и методы). Тэг Laravel прикрепил потому что не знаю, есть ли в laravel какие-то штуки, которые помогут с этим.
Вопрос: какие есть практики, что прочитать/посмотреть, какой код перерыть что бы иметь понятие о том, как это сделать правильно? Правильно это так, что бы не стыдно показать и с возможностью покрыть юнит тестами (сейчас только фичер).
Заранее спасибо.
UPD: Вот еще прикрутил CI один, так RouteWrapper портит оценку с A на F (минимально возможную) исключительно из-за сложности класса: тык

21 Авг 2019 в 07:00
194 +1
1
Ответы
1

Для того чтобы разбить God class на более мелкие классы и улучшить его структуру, можно использовать следующие техники и практики:

Принцип Single Responsibility: разделите методы класса на отдельные классы в соответствии с их ответственностью. Каждый класс должен быть ответственен только за одну конкретную задачу.Принцип Open/Closed: сделайте класс расширяемым, но закрытым для изменений. Это позволит добавлять новую функциональность без изменения существующего кода.Используйте композицию: создайте классы, которые будут содержать логику из огромных методов God class и связывайте их между собой.Примените паттерн декоратора: разделите различные аспекты функциональности класса на отдельные декораторы, которые можно комбинировать для получения нужного поведения.Используйте DI (Dependency Injection): инъекция зависимостей поможет разделить класс на более мелкие компоненты и улучшит его тестируемость.

Чтобы изучить более конкретные примеры и практики, рекомендуется прочитать книги по ООП, изучить принципы SOLID, паттерны проектирования и рефакторинг кода. Также полезно изучить структуры данных и алгоритмы, чтобы лучше организовать свой код.

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

Не стесняйтесь проводить рефакторинг кода постепенно, тестируя изменения и постепенно улучшая структуру класса.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 888 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир