Частичные занятия дают вам столько всего.Я до сих пор не знаю способа отделить определение вашего класса от реализации, чтобы каждый из них существовал в отдельном файле.Так что, если вам нравится развиваться, основываясь на парадигме необходимости знать, то вы как бы застряли.По сути, есть три уровня, на которых может работать разработчик ...
1) Владеет всем кодом, имеет доступ к нему и поддерживает его.
2) Желает использовать полезную базукласс (ы), которые могут составлять часть фреймворка или могут быть просто полезным классом с некоторыми виртуальными методами и т. д. и желают расширить или повторно реализовать интересующие методы виртуального базового класса.Теперь разработчику не нужно идти и смотреть на код в базовом классе (ах), чтобы понять вещи на функциональном уровне.Если вы понимаете работу функции, ее входных и выходных параметров, вам не нужно идти и копаться в исходном коде.Если вы считаете, что есть ошибка или необходима оптимизация, обратитесь к разработчику 1), который владеет и поддерживает базовый код.Конечно, ничего не говорится о том, что 1) и 2) нельзя связать с одним и тем же разработчиком, и в этом случае у нас нет проблем.На самом деле, это чаще, чем я подозреваю.Тем не менее, все еще является хорошей практикой хорошо разделять вещи в соответствии с уровнем, на котором вы работаете.
3) Разработчик должен использовать уже упакованный / запечатанный объект / компонент dll, который предоставляет соответствующие интерфейсы.
В контексте c #, 1) и 3) проблем нет.С 2) я полагаю, что нет никакого способа обойти это (если вы не перейдете от предоставления виртуальных базовых методов к раскрытию методов интерфейса, которые могут быть переопределены в компоненте, обладающем потенциальным базовым классом).Если я хочу взглянуть на определение класса, чтобы просмотреть методы, функции скаффолдинга и т. Д., Я должен также взглянуть на весь исходный код, который просто мешает тому, на чем я пытаюсь сосредоточиться.
Конечно, если есть документация по определению класса, внешняя по отношению к тому, как мы обычно это делаем (в заголовках и исходных файлах), то я должен признать, что в контексте 2) нет причин когда-либо смотретьв файл определения класса, чтобы получить функциональные знания.
Так что, может быть, умные Томы придумали c #, решили смешать определение класса с реализацией, чтобы поощрить разработчиков иметь внешние документы для своих определений классов и интерфейсов, которых в большинстве ИТ-компаний крайне не хватает *.1013 *