![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| wladF |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
ИМХО, решать этот вопрос в отрыве от конкретного языка неправильно.
Каждый язык обрастает своей идеологией, best practices, bad practices и т.д., и не учитывать их - себе дороже. Одна из частых ошибок программистов, пришедших с другой платформы/языка, - писать в новом синтаксисе, но в старой идеологии - чаще всего получается объединение недостатков... -------------------- qqq |
|||
|
||||
![]()
|
| Правила раздела "Философия программирования": | |
|
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Философия программирования | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |