Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП, динамическая типизация 
:(
    Опции темы
wladF
Дата 10.1.2011, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Допустим есть 3 класса, A и B являются разновидностью одной сущности, C логически не связан с ней.
Есть некая функция которая вызывает(точнее пытается) методы объектов этих классов
test(arg) {
   arg->draw()
}
a = new A
foo(a)
Но т.к. язык с дин. типизацией, нельзя гарантировать до последнего момента, есть ли у объекта arg нужный метод.

Например если этот код был бы на PHP, можно было немного изменить сигнатуру функции test, на
function test(I $arg), где I это общий интерфейс классов A и B, тем самым можно немного себя обезопасить при явной попытке передать туда "не верный"объект, даже если у него и есть этот метод draw.
Но тогда может возникнуть такая проблема, иногда нужно будет использовать и объект класса C в этой функции, который не хочется делать зависимым от интерфейса I, слишком обобщая несвязанные классы, либо создавать новые сущности(например Drawable), да и вообще проектировать сложные иерархии как-то особого желания нету.

Вопрос в следующем, стоит ли по полной использовать т.н. "утиную типизацию" либо пытаться делать ограничения, на подобии статической типизации? тем самым отчасти упрощая тестирование.



Это сообщение отредактировал(а) wladF - 10.1.2011, 20:06
PM MAIL   Вверх
maxim1000
Дата 10.1.2011, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



ИМХО, решать этот вопрос в отрыве от конкретного языка неправильно.

Каждый язык обрастает своей идеологией, best practices, bad practices и т.д., и не учитывать их - себе дороже. Одна из частых ошибок программистов, пришедших с другой платформы/языка, - писать в новом синтаксисе, но в старой идеологии - чаще всего получается объединение недостатков...


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.