metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-12-11 01:04 pm
Entry tags:

private/internal методы и классы в .NET

А вот скажите, почему у авторов гопнета так популярно делать классы и методы недоступными для разработчиков?
Сейчас сижу, например в ILSpy и делаю обертку над ServiceController, потому что нельзя без ловли исключений узнать, существует ли сервис, а конфигурацию сервиса так и вообще никак прямо узнать нельзя. При этом все полезные методы и классы (нативный интероп итд) сугубо приватные или внутренние.

[identity profile] altmind.livejournal.com 2012-12-11 11:36 am (UTC)(link)
торжество инкапсюляции начинается тогда, когда в умах программистов начинают бродить мысли о CYA(клиенты расширяют классы, нарушают контракты в коде а потом сношают мозг саппорту). Когда программисты понимают, что не могут предусмотреть все случаи использования компонентов и что возможность кастомизации любых классов является залогом расширяемости и гибкости, появляется инкапсюляция в стиле питона, где инкапсюляция не энфорсится.

отдельного разговора требует принцип "make all classes final by default", по которому в свое время проехался nikitonsky.