Какова допустимая глубина иерархии методов класса?

Ссылка скопирована
1 ответ

В моих классах обычно 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(){} }

Дополнительно:

порой такая запутанная, что без бутылки не разберёшься.

Вероятно, что-то пошло не так.

  • А все ли там должно мыть публичным? Если метод внутренний, нет нужды его светить наружу, лучше больше методов, чем раздувать один. Статика это вообще обёртка для функции
  • Допустимая глубина иерархии методов класса - 42
    А если серьезно, то если даже автору кода он кажется запутанным то надо декомпозировать дальше.
  • А все ли там должно мыть публичным?

    @Compolomus, конечно нет.
    Вы точно этот вопрос комментируете?

  • Ответы:

    Если в общем - SOLID
    Если в частном - SOLID, но чтобы вам удобно было

    Я в зависимости от масштаба функционала делаю и так и так. Если функционал функции (да), относится непосредственно к ее задаче - оставляю внутри класса, если нет - создаю класс-хелпер, например

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ольга Сеть Ответ

    Допустимая глубина иерархии методов класса зависит от конкретной ситуации, структуры программы и требований проекта. В общем случае, рекомендуется ограничивать глубину иерархии методов класса до 3-4 уровней.

    Глубокая вложенность методов класса может привести к усложнению кода, усложненному пониманию и поддержке. Большая вложенность также может увеличить вероятность возникновения ошибок и затруднить отладку.

    Если у вас есть необходимость в глубокой иерархии методов класса, то, возможно, стоит пересмотреть архитектуру вашего приложения. Можно попробовать разделить класс на несколько более мелких классов, которые будут выполнять отдельные функции, а затем связать их взаимодействием.

    Также стоит учитывать принципы SOLID, в частности принцип единственной ответственности (Single Responsibility Principle). Этот принцип говорит о том, что класс должен иметь только одну причину для изменения. Если у вас есть класс с глубокой иерархией методов, возможно, он нарушает этот принцип и стоит разбить его на несколько более мелких классов.

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно