[Java] Сколько уровней наследования


Answers

Из того, что я видел (обратите внимание: это не официальное мнение, только мои наблюдения), 3-4 является разумным максимумом.

Кроме того, помните одну важную часть из Effective Java:

Благодарить композицию над наследованием

Question

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

Некоторые ссылки на установленные практики / примеры, которые хорошо работали в мире Java, были бы приятными в ответах, поскольку это с точки зрения сообщества и фреймворков, окружающих Java.




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

Как и другие плакаты, вы можете сделать глубину слишком мелкой или слишком глубокой. Это проблема с иглами ИМХО.




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




Общее правило - это глубже иерархии, тем труднее было бы понять, где определенные методы и поля определены или / и переопределены.

Но помимо наследования есть другие факторы, которые необходимо соблюдать, чтобы сохранить сложность кода.

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




Links