Какова допустимая глубина иерархии методов класса?
В моих классах обычно 150-200 строк при 10-15 методах.
Часто между методами возникает иерархия различной глубины и порой такая запутанная, что без бутылки не разберёшься.
Иногда я задумываюсь: а не вынести ли все эти слои в другие классы...
Или не выносить, да и шут с ними, пусть слоятся...
А как вы делаете?
spoiler
class SomeClass { //deep1 public static function myFunc1(): void {self::myFunc3();} //deep1 public static function myFunc2(): void {self::myFunc4();} //------------------------------------------------------- //deep2 private static function myFunc3(): void{self::myFunc5();} //deep2 private static function myFunc4(): void{self::myFunc6();} //------------------------------------------------------- //deep3 private static function myFunc5(){} //deep3 private static function myFunc6(){} } |
class SomeClass { //deep1 public static function myFunc1(): void {self::myFunc3();} //deep1 public static function myFunc2(): void {self::myFunc4();} //------------------------------------------------------- //deep2 private static function myFunc3(): void{self::myFunc5();} //deep2 private static function myFunc4(): void{self::myFunc6();} //------------------------------------------------------- //deep3 private static function myFunc5(){} //deep3 private static function myFunc6(){} }
Дополнительно:
порой такая запутанная, что без бутылки не разберёшься.
Вероятно, что-то пошло не так.
А если серьезно, то если даже автору кода он кажется запутанным то надо декомпозировать дальше.
А все ли там должно мыть публичным?
@Compolomus, конечно нет.
Вы точно этот вопрос комментируете?
Ответы:
Если в общем - SOLID
Если в частном - SOLID, но чтобы вам удобно было
Я в зависимости от масштаба функционала делаю и так и так. Если функционал функции (да), относится непосредственно к ее задаче - оставляю внутри класса, если нет - создаю класс-хелпер, например
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Допустимая глубина иерархии методов класса зависит от конкретной ситуации, структуры программы и требований проекта. В общем случае, рекомендуется ограничивать глубину иерархии методов класса до 3-4 уровней.
Глубокая вложенность методов класса может привести к усложнению кода, усложненному пониманию и поддержке. Большая вложенность также может увеличить вероятность возникновения ошибок и затруднить отладку.
Если у вас есть необходимость в глубокой иерархии методов класса, то, возможно, стоит пересмотреть архитектуру вашего приложения. Можно попробовать разделить класс на несколько более мелких классов, которые будут выполнять отдельные функции, а затем связать их взаимодействием.
Также стоит учитывать принципы SOLID, в частности принцип единственной ответственности (Single Responsibility Principle). Этот принцип говорит о том, что класс должен иметь только одну причину для изменения. Если у вас есть класс с глубокой иерархией методов, возможно, он нарушает этот принцип и стоит разбить его на несколько более мелких классов.
Итак, допустимая глубина иерархии методов класса зависит от конкретной ситуации, но рекомендуется ограничивать ее до 3-4 уровней и рассмотреть возможность пересмотра архитектуры приложения в случае необходимости глубокой вложенности.