October 25, 2006

О сокрытии

Вместо эпиграфа:

information hiding

(1) In programming, the process of hiding details of an object or function. Information hiding is a powerful programming technique because it reduces complexity. One of the chief mechanisms for hiding information is encapsulation -- combining elements to create a larger entity. The programmer can then focus on the new object without worrying about the hidden details.

Information hiding is also used to prevent programmers from changing --- intentionally or unintentionally -- parts of a program.

(Взято отсюда: http://www.webopedia.com/TERM/I/information_hiding.html)

Не подумайте, что я кого-то хочу учить тут основам. Нисколько. Более того, я сам хочу разобраться в вопросе.

Итак:

Совершенно ясно, что такое это самое сокрытие и для чего оно применяется. Для того, чтобы спрятать детали реализации от посторонних глаз. В случае с .Net Framework (как, впрочем и с любой другой библиотекой классов) это делается для (в том числе) упрощения работы пользователя, то есть программиста, то есть меня. Чтобы я не задумывался над всеми теми подводными камнями, на которые натыкались разработчики Microsoft в процессе реализации какой-нибудь фишечки, типа того же класса Thread.

Однако! Сами разработчики периодически вынуждены (под влиянием общественного мнения или по собственной инициативе) описывать внутреннее поведение и внутренние взаимосвязи своих разработок широкой публике. В качестве примера, вчерашний разговор о том, почему Sleep хуже чем Join или вот ещё один пост с подробностями реализации анонимных методов в .net 2.0. И это только то, что мне попалось за 2 последних дня.

Согласен! Всегда интересно выяснить как же оно всё-таки работает. Но (выдержка из поста про анонимные методы): "It's actually important that you understand how these works (and not just treat it as "magic"), because lack of said understanding can lead to subtle programming errors". Это, блин, портит всю красоту чёрного ящика под названием Whatever Framework. Получается, что мало понять ЧТО он делает, надо ещё отдавать себе отчёт в том, КАК он это делает. А как же сокрытие?! Более того, если я знаю как это работает, то зачем я буду вообще это использовать, когда могу сделать точно так же.

ИМХО: фреймворк, если уж он так гордо себя именует должен быть совершенно чёрным ящиком и не приводить к subtle programming errors только потому, что я не знаю как он устроен.

 

Technorati tags: ,

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?