[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стратегия программирования
gidrosoldat
Доброго время суток, друзья!
Наконец то появилось свободное время и сразу же взялся за теорию. Зачитываюсь вот этой книжкой. - уже для себя много нового открыл!
Довольно часто в ней повторяются такие слова (как мантра какая):
Цитата
Программируйте на основе интерфейса, а не его реализации.

Увы, до меня пока эта фраза не дошла, крутится где то на границе сознания, но мягкой вспышкой понимания мозг пока не озарился ...
А как вы понимаете эту фразу? Что она для вас на практике означает?
П.С. Какие шаблоны программирования и в каких случаях вы реально используете в жизни? Как часто?



Спустя 1 день, 20 часов, 22 минуты, 13 секунд (19.06.2011 - 10:38) Гость_lekafe написал(а):
Пушу и использованием ООП уже с конца того года, но необходимости в интерфейсах еще не испытывал. Знаю о их существовании но обычному программисту они как то не нужны.

Спустя 9 минут, 57 секунд (19.06.2011 - 10:48) bulgakov написал(а):
Если вы не понимаете зачем это нужно, то вам это не нужно, если очень уж интересно интерфейс это клас в котором все методы абстрактные, для чего это надо? Например, вы работаете в команде, ведущий разработчик создал интерфейс с методами и вы наследуете класс от этого интерфейса, далее для нормальной работы класса вы должны объявить и описать все методы в своем классе с такими же именами как в интерфейсе, просто интерфейс это как чертеж для наследуемых классов, как шаблон по которому нужно лепить наследуемые классы. Вот в кратце очень грубо про интерфейсы. Опять же повторюсь если не понимаете зачем это нужно то это вам пока не нужно.

Спустя 22 часа, 18 минут, 20 секунд (20.06.2011 - 09:06) twin написал(а):
Цитата
Программируйте на основе интерфейса, а не его реализации.

Стройте сначала крышу, потом стены и фундамент.
Примерно так звучит эта фраза. Программировать нужно на основе архитектуры, проекта. А интерфейс таковым не является. Это заплатка, а не чертеж.

Спустя 3 дня, 12 часов, 58 минут, 49 секунд (23.06.2011 - 22:05) Guest написал(а):
twin, почему крыша?
Если интерфейс определяет внутреннюю структуру классов то это скорее основа создаваемого кода.
Возможно авторы книги хотели сказать, что надо очертить основные контуры будущей программы, спроектировать стройную абстрактную модель, а уж потом лезть в частности. Пока я так это понимаю.
А между тем никто так и не ответил где и какие шаблоны довелось использовать...

Спустя 12 часов, 48 минут, 42 секунды (24.06.2011 - 10:53) twin написал(а):
Цитата
Возможно авторы книги хотели сказать, что надо очертить основные контуры будущей программы, спроектировать стройную абстрактную модель, а уж потом лезть в частности.
Ну это чистой воды теория. На практике так бывает крайне редко.

Потому что ты хоть семи пядей во лбу, всех нюансов заранее предусмотреть не сможешь. И когда дело доходит до реализации, и вдруг потребуется дополнительный метод, его придется так же отражать и в интерфейсе. А значит это вовсе не проект. Это скорее документирование. Тоесть конечно, предварительно можно спроектировать и даже задокументировать строительство. Но тупо придерживаться интерфнйса - вредно. Он скорее говорит - "обязательно используй то, что есть, но если что то понадобилось еще - не забудь задокументировать". Дабы не запутаться и не запутать других.

Спустя 6 часов, 54 минуты, 9 секунд (24.06.2011 - 17:48) gidrosoldat написал(а):
twin, прав конечно. Но!
Не даром пишут, что в ООП на проектирование уходит чуть ли не больше времени чем на сам кодинг. Как мне показалось чуть ли не самый большой плюс в парадигме ООП - настраиваемость кода. При правильной организации добавляешь очередной класс, в клиентском коде вызываешь его с разными параметрами и вуаля - все работает. Тогда как в процедурном коде с его тесными связями и отсутствие инкапсуляции, изменения могут аукнуться по всей программе.
П.С. вот только разрекламированной прозрачности все никак не увижу! Видимо еще не дорос ))

Спустя 7 часов, 10 минут, 15 секунд (25.06.2011 - 00:58) Greg1978 написал(а):
Очень интересные теории biggrin.gif
Но интерфейс объекта (подчёркиваю) объекта , а не класса задаётся не архитектором (что бы его заразу премии решили biggrin.gif ) и не внутреннюю структуру классов, и тем более "класс в котором все методы абстрактные" и ещё круче "просто интерфейс это как чертеж для наследуемых классов (вот это уже конечно не к селу не к городу мягко говоря)" biggrin.gif , а интерфейс в начале задаётся от того ЧТО ОН (объект, класс) хочет предоставить другим классам (объектам). Интерфейс даёт (немного twina smile.gif ) наверное обескуражу sad.gif ... но "Он скорее говорит - "обязательно используй то, что есть, но если что то понадобилось еще - не забудь задокументировать". Дабы не запутаться и не запутать других. " Если этого не будет "наверное" из за этого стандарты и не принимаются и разработчики ("нижнего звена" постоянно попадают, причём очень лихо).

Спустя 2 дня, 9 часов, 20 минут, 21 секунда (27.06.2011 - 10:18) twin написал(а):
Цитата
Интерфейс даёт (немного twina  ) наверное обескуражу  ... но "Он скорее говорит - "обязательно используй то, что есть, но если что то понадобилось еще - не забудь задокументировать". Дабы не запутаться и не запутать других. " Если этого не будет "наверное" из за этого стандарты и не принимаются и разработчики ("нижнего звена" постоянно попадают, причём очень лихо).
Ну вот почему я и говорю - что это заплатка. Когда приложение проектируется полностью, одними людьми, а реализуется другими, очень велика вероятность этого "поподалова". Ведь сколько бы не гоаорили о прозрачности ООП кода, на самом деле это не так. Он гораздо путаннее процедурного. А посему без таких костылей никак. Обязательно нужен такой "активный" комментарий.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.