Форум
.NET
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, karbofos42, Вы писали: K>Здравствуйте, Sinclair, Вы писали: S>>Помимо потери 5 минут времени, вы пишете код, который вы не знаете для чего нужен. K>Ну, в Майкрософте в абстрактном классе написали этот конструктор и внутри даже запилили поддержку кастомных компареров, хотя проще было делать только для дефолтного. K>А я конечно для себя не могу конструктор написать, потому что они вот знали зачем он нужен, а я не знаю. S>>У вас нет ни одной точки, в которой для вашей коллекции вызывается конструктор с нестандартным компарером. S>>Через полгода, когда вы поняли, что для вашей коллекции важно использовать [i]какой-то конкретный[/i] компарер, у вас уже есть неизвестное количество кода, заточившегося под этот конструктор. K>Так у меня нет ни одной точки или у меня неизвестное количество кода? K>Если я не использую конструктор с кастомным комперером, а сегодня он мне понадобился - я в нужном месте добавил вызов и всё. K>Если таки использую - значит он подавно был уже мне нужен и писал не зря. S>>Убирать код всегда дороже, чем его писать. K>Зачем его убирать? Он есть, хлеба не просит. K>А вот если класс был завязан на дефолтный компарер, а потом вдруг понадобился кастомный, вот тут может быть веселье с добавлением кода. K>Ищи все проверки объектов и меняй их на вызов компарера. S>>Главное - что [i]добавление[/i] конструктора никакую обратную совместимость не ломает. Поэтому это дёшево. K>А какую совместимость ломает неиспользуемый конструктор? K>Если был конструктор, принимающий IEnumerable<T>, а я добавлю конструктор, принимающий ICollection<T>, то там точно совместимость не сломается? S>>Вот этот момент категорически непонятен. Какие ещё фабрики? Вы привели пример KeyedCollection - ну, покажите мне, как обойти отсутствие конструктора с IEqualityComparer при помощи фабрики. K>Создаём наследника от наследника KeyedCollection. Опять перегружаем в нём метод GetKeyForItem, чтобы он возвращал наследника ключа, для которого прописано правильное сравнение по умолчанию. K>т.к. мы пишем по паттернам и всему такому, то вызов конструктора выносим в фабрику, которая будет возвращать либо исходного наследника с одним сравнением, либо его потомка - с другим. K>К чему вот эти поиски реального примера на форуме? K>Реальный код в большинстве своём коммерческий и принадлежит работодателю. K>Чтобы показать масштаб трагедии - там нужно целый проект вывалить, а то будет опять, что пару конструктором нормально и вручную написать. K>Да и там в итоге будет, что так не нужно писать, нужно всё отрефакторить, переделать, потратить неделю времени на то, чтобы обойти это. K>Хотя исходный вопрос был в наследовании конструкторов. K>Почему наследование методов - это нормально, а конструкторы - это плохо и неправильно, я так и не понял.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …