Ответ на каждый из ваших 3 вопросов: «Это зависит». В конечном итоге все будет зависеть от вашего домена и того, что ваша программа делает с ним. Много раз я обнаружил, что шаблоны проектирования, которые я выбрал для использования, действительно помогают найти точки, где наследование работает хорошо.
Например, рассмотрим «преобразователь», используемый для преобразования данных в желаемую форму. Если вы получаете 3 источника данных в виде CSV-файлов и хотите поместить их в три разные объектные модели (и, возможно, сохранить их в базе данных), вы можете создать базу 'csv transformer', а затем переопределить некоторые методы при наследовании из нее в Для того, чтобы обрабатывать различные конкретные объекты.
«Приведение» процесса разработки к языку шаблонов поможет вам найти объекты / методы, которые ведут себя аналогичным образом, и поможет в сокращении избыточного кода (возможно, посредством наследования, возможно, с помощью разделяемых библиотек - в зависимости от того, что лучше всего подходит для ситуации). 1005 *
Кроме того, если вы будете хранить свои слои отдельно (бизнес, данные, презентация и т. Д.), Ваша диаграмма классов будет проще, и тогда вы сможете «визуализировать» те объекты, которые должны быть унаследованы.