Почему не сделали generic-версию ICloneable
От: Sentry Россия  
Дата: 27.07.06 10:18
Оценка:
Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает ...
Съешь бобра — спасёшь дерево! :) ...
Re: Почему не сделали generic-версию ICloneable
От: Mckey Россия  
Дата: 27.07.06 10:26
Оценка:
Здравствуйте, Sentry, Вы писали:

S>Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает ...


А вот в Nemerle добавить не забыли...

public interface ICloneable<'a>


....... не сочтите за рекламу ......
Делай добро и бросай его в воду...
Re: Почему не сделали generic-версию ICloneable
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.07.06 10:31
Оценка:
Здравствуйте, Sentry, Вы писали:

S>Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает ...


Ну сделай сам, делов то.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Почему не сделали generic-версию ICloneable
От: Sentry Россия  
Дата: 27.07.06 10:48
Оценка:
AVK>Ну сделай сам, делов то.

Не хочу сам. Хочу, чтоб стандартно было. Представляете, чё будет, если в каждой библиотечке будет по ICloneable. А если надо будет использовать эти библиотечки вместе ... — будут конфликты имён, надо будет вводить псевдонимы пространств имён в using-ах и прочая лубуда начнётся.

Не-е ... Такие вещщи должны быть в стандарте (IMHO, конечно) ...
Съешь бобра — спасёшь дерево! :) ...
Re[3]: Почему не сделали generic-версию ICloneable
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 27.07.06 11:03
Оценка: +1
Здравствуйте, Sentry, Вы писали:

AVK>>Ну сделай сам, делов то.


S>Не хочу сам. Хочу, чтоб стандартно было. Представляете, чё будет, если в каждой библиотечке будет по ICloneable. А если надо будет использовать эти библиотечки вместе ... — будут конфликты имён, надо будет вводить псевдонимы пространств имён в using-ах и прочая лубуда начнётся.


S>Не-е ... Такие вещщи должны быть в стандарте (IMHO, конечно) ...


ИМХО, генерик ICloneable будет вводить в заблуждение. Clone должен возвращать точную копию текущего объекта "фиксированного" типа. А теперь представьте его в виде генерика — складывается впечатление, что один и тот же объект может "скопировать" себя несколькими способоами (в разные результирующие типы).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Почему не сделали generic-версию ICloneable
От: GlebZ Россия  
Дата: 27.07.06 11:04
Оценка:
Здравствуйте, Sentry, Вы писали:

S>Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает ...

Для реализации Clone нужно создавать новый объект. А с этим в генериках не очень хорошо. Поэтому реализация подобного интерфейса достаточно проблематично.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Почему не сделали generic-версию ICloneable
От: TK Лес кывт.рф
Дата: 27.07.06 11:05
Оценка: +1
Hello, "Sentry"
> Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о
> generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает
> ...

Потому, что IClonable это не самый удачный дизайн.
В целом про использование IClonable можно почитать тут:
http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: Почему не сделали generic-версию ICloneable
От: Sentry Россия  
Дата: 27.07.06 11:13
Оценка:
P>ИМХО, генерик ICloneable будет вводить в заблуждение. Clone должен возвращать точную копию текущего объекта "фиксированного" типа. А теперь представьте его в виде генерика — складывается впечатление, что один и тот же объект может "скопировать" себя несколькими способоами (в разные результирующие типы).

Есть проблемка помощнее, чем просто заблуждение. По мне, так я ничего заблуждающего не вижу: ясно, что Clone() создаёт копию объекта, и его тип по-любому должен быть такой же, как и у текущего.

Так вот, в чём проблема: если реализовывать этот интерфейс в структурах, то при возврате значения из метода будет происходить его boxing. Вот от этого, IMHO, реально тоскливо ...
Съешь бобра — спасёшь дерево! :) ...
Re[3]: Почему не сделали generic-версию ICloneable
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.07.06 11:14
Оценка: 1 (1)
Здравствуйте, Sentry, Вы писали:

S>Не хочу сам. Хочу, чтоб стандартно было.


А смысл? Дженерик версия ICloneable с конкретным параметром все равно новый тип, базовый дженерик тебе ничем не поможет в плане универсальности.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Почему не сделали generic-версию ICloneable
От: Sentry Россия  
Дата: 27.07.06 11:33
Оценка:
TK>Потому, что IClonable это не самый удачный дизайн.
TK>В целом про использование IClonable можно почитать тут:
TK>http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx

Я слегка не согласен. Там рекомендуют написать свой Clone или Copy и задокументировать, какую копию он делает: shallow или deep, без реализации ICloneable. Но ICloneable — это стандарт. И какая разница, что есть метод Clone с реализацией интерфейса или без неё. По мне так лучше с реализацией, ибо где-то я читал, что лучше даже пожертвовать логически верным дизайном, чем не соответствовать стандартным соглашениям.
Чего им трудно было что ли его туда пихнуть? Кому он мешал бы? А мне бы спокойней стало ...
Съешь бобра — спасёшь дерево! :) ...
Re[4]: Почему не сделали generic-версию ICloneable
От: Sentry Россия  
Дата: 27.07.06 11:35
Оценка:
AVK>А смысл? Дженерик версия ICloneable с конкретным параметром все равно новый тип, базовый дженерик тебе ничем не поможет в плане универсальности.

А какой тогда смысл в IComparable<T> и вообще в generic-интерфейсах? ...
Съешь бобра — спасёшь дерево! :) ...
Re[3]: Почему не сделали generic-версию ICloneable
От: Whistler Россия Блог на GotDotNet.ru
Дата: 27.07.06 12:03
Оценка:
Здравствуйте, Sentry, Вы писали:

S>Я слегка не согласен. Там рекомендуют написать свой Clone или Copy и задокументировать, какую копию он делает: shallow или deep, без реализации ICloneable. Но ICloneable — это стандарт. И какая разница, что есть метод Clone с реализацией интерфейса или без неё. По мне так лучше с реализацией, ибо где-то я читал, что лучше даже пожертвовать логически верным дизайном, чем не соответствовать стандартным соглашениям.

S>Чего им трудно было что ли его туда пихнуть? Кому он мешал бы? А мне бы спокойней стало ...

Они не дураки, и врядли они об этом просто напросто забыли... Просто они, видимо, взвесили все за и против и поняли что это плохой дизайн.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Почему не сделали generic-версию ICloneable
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.07.06 12:16
Оценка: +1 :)
Здравствуйте, Sentry, Вы писали:

S>А какой тогда смысл в IComparable<T>


Смысл простой — IComparable<T> используется в самом фреймворке в качестве типа параметра

S>и вообще в generic-интерфейсах?


Для разных целей.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Почему не сделали generic-версию ICloneable
От: Константин Л.  
Дата: 27.07.06 13:14
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "Sentry"

>> Возник вопрос: почему хлопцы из Microsoft во 2-ом .NET не позаботились о
>> generic-версии интерфейса ICloneable. Меня, например, это иногда напрягает
>> ...

TK>Потому, что IClonable это не самый удачный дизайн.

TK>В целом про использование IClonable можно почитать тут:
TK>http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx

чтож в нем неудачного? неудачный design — это shallow copy. И поддержка этого неудачного дизайна — на совести тех, кто его распространяет. Clone должен всегда
делать deep copy. Для shallow пусть придумают что-нибудь другое.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.