В практически каждом проекте, над которым я когда-либо работал, будет один или два класса со следующими свойствами:
- Чрезвычайно большой со многими членами и методами.
- Многие другие классы, наследующие от этого класса.
- Многие другие классы в противном случае зависят от этого класса.
Плохой дизайн, можно сказать. Но во всех случаях это было не так во время разработки. Занятия со временем стали органично расти и стали пресловутым "классом Бога". Это был такой инвариант моего опыта работы с крупными проектами программного обеспечения, которые я должен задать:
- Можно ли предвидеть вероятные магниты зависимостей и программное обеспечение для проектирования таким образом, чтобы вероятность того, что такие классы проявятся, менее вероятна? Если да, то конкретно, как?
- Или это просто требует беспощадного рефакторинга с течением времени?
- Или есть ли какое-то техническое решение или шаблон дизайна, который может смягчить проблемы, вызванные такими классами?
- Или сочетание всех трех?
Подсказки, опыт и идеи приветствуются!