Re[7]: Багодром: Реализация операторов сравнения
От: Kore Sar  
Дата: 03.04.08 09:26
Оценка: +1 :)
Здравствуйте, s.and, Вы писали:

KS>>Теперь Вы видите, Влад написал что мы защитимся от неверных переданых типов.

KS>>И да, я сомневаюсь, что Влад написал неоптимизированый код.

SA>Едрить твою налево, это можно было и не перепечатывать. Я замысел Влада и так понял. Знаю, что такое оператор as...

SA>В реализации замысла Влада действительно была опечатка, на которую ты сказал (заменить obj на member).

Спасибо, что всё-таки подтвердили мою правоту и признали свою неправоту в том, что это всё-таки опечатка.


SA>Но!

SA>Если obj не DropDownMember и не его наследник, то метод Влада с учетом твоего замечания возвратить -1, что не верно, как неверно и любое другое значение. Метод первым делом должен содержать проверку наподобие этой:

SA>
SA>if (obj == null)
SA>throw ArgumentNullException("obj");
SA>if (object.ReferenceEquals(obj as DropDownMember, null))
SA>throw new ArgumentException("Noncompatible type", "obj");
SA>


SA>Изучайте:

SA>1. правила хорошего тона проверки аргументов;
SA>2. правила реализации методов сравнения.

Влад, Вы поняли? Изучайте!!! Ибо у Вас плохой код!
Re[8]: Багодром: Реализация операторов сравнения
От: Аноним  
Дата: 03.04.08 09:36
Оценка: +1 -1
Здравствуйте, Kore Sar, Вы писали:

KS>Влад, Вы поняли? Изучайте!!! Ибо у Вас плохой код!


Предлагаю не прятаться за авторитет Влада, а признать, что возвращение методом ComnpareTo -1 (да и любого другого значения), если сравниваемый аргумент имеет несовместимый тип — плохой код.
Или же, если имеешь иное мнение, привести свои аргументы.
Re[9]: Багодром: Реализация операторов сравнения
От: Kore Sar  
Дата: 03.04.08 09:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Kore Sar, Вы писали:


KS>>Влад, Вы поняли? Изучайте!!! Ибо у Вас плохой код!


А>Предлагаю не прятаться за авторитет Влада, а признать, что возвращение методом ComnpareTo -1 (да и любого другого значения), если сравниваемый аргумент имеет несовместимый тип — плохой код.

А>Или же, если имеешь иное мнение, привести свои аргументы.

Да мне пофигу, хорошо это или плохо. Мне пофигу твоё мнение. Мне пофигу авторитет Влада. Мне пофигу хороший и плохой код в любом понимании этих слов. Мне пофигу вообще эта дискуссия. Я соглашусь со всем чем хочешь, только отстань от меня, ладно?

Я просто жду ответ Влада на свой вопрос.
Re[10]: Багодром: Реализация операторов сравнения
От: Lloyd Россия  
Дата: 03.04.08 09:42
Оценка: :)
Здравствуйте, Kore Sar, Вы писали:

KS>Я просто жду ответ Влада на свой вопрос.


Тут явно не хватает "глубокоуважаемого".
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[10]: Багодром: Реализация операторов сравнения
От: s.and  
Дата: 03.04.08 10:01
Оценка: -1 :)
А>>Предлагаю не прятаться за авторитет Влада, а признать, что возвращение методом ComnpareTo -1 (да и любого другого значения), если сравниваемый аргумент имеет несовместимый тип — плохой код.
А>>Или же, если имеешь иное мнение, привести свои аргументы.

KS>Да мне пофигу, хорошо это или плохо. Мне пофигу твоё мнение. Мне пофигу авторитет Влада. Мне пофигу хороший и плохой код в любом понимании этих слов. Мне пофигу вообще эта дискуссия. Я соглашусь со всем чем хочешь, только отстань от меня, ладно?


KS>Я просто жду ответ Влада на свой вопрос.


Э нет... Не отстану. По причинам:
1. нет смысла ждать ответа Влада, т.к. ты заметил действительно опечатку;
2. зачем ты тогда вступил в дискуссию, если, как утверждаешь, хочешь только ответа по поводу опечатки, но не хочешь обсуждать качество предложенных Владом решений.
3. В твоей последней сентенции один из пунктов — наглая ложь. Вот она: "Мне пофигу авторитет Влада". Как только оказалось, что решение Влада, мягко говоря, не идеально, ты тебя тут же кончились аргументы, и ты тут же спрятался за спину своего великого гуру.

Интересно, теперь, когда так некрасиво засветился почитатель Влада, сочтет ли Влад целесообразным вступать в эту дискуссию?
Впрочем, было бы очень интересно узнать мнение/разъяснение самого Влада по поводу критики предложенного им решения.

Тем более, что сам Влад, в отличие от его почитателя, в этом топике совершенно адекватно подискутировал и со скромным автором данного поста.
Re[11]: Багодром: Реализация операторов сравнения
От: Kore Sar  
Дата: 03.04.08 10:11
Оценка: :))
Здравствуйте, s.and, Вы писали:

А>>>Предлагаю не прятаться за авторитет Влада, а признать, что возвращение методом ComnpareTo -1 (да и любого другого значения), если сравниваемый аргумент имеет несовместимый тип — плохой код.

А>>>Или же, если имеешь иное мнение, привести свои аргументы.

KS>>Да мне пофигу, хорошо это или плохо. Мне пофигу твоё мнение. Мне пофигу авторитет Влада. Мне пофигу хороший и плохой код в любом понимании этих слов. Мне пофигу вообще эта дискуссия. Я соглашусь со всем чем хочешь, только отстань от меня, ладно?


KS>>Я просто жду ответ Влада на свой вопрос.


SA>Э нет... Не отстану. По причинам:


Ок, поехали.

SA>1. нет смысла ждать ответа Влада, т.к. ты заметил действительно опечатку;

SA>2. зачем ты тогда вступил в дискуссию, если, как утверждаешь, хочешь только ответа по поводу опечатки, но не хочешь обсуждать качество предложенных Владом решений.
Потому что Вы мне написали "ты не прав". Теперь Вы мне написали что я прав. Я своего от дискуссии добился.
SA>3. В твоей последней сентенции один из пунктов — наглая ложь. Вот она: "Мне пофигу авторитет Влада". Как только оказалось, что решение Влада, мягко говоря, не идеально, ты тебя тут же кончились аргументы, и ты тут же спрятался за спину своего великого гуру.
Хорошо, это наглая ложь.

SA>Интересно, теперь, когда так некрасиво засветился почитатель Влада, сочтет ли Влад целесообразным вступать в эту дискуссию?

О мой кумир, о Влад! Приди! Осени мое чело своим знамением!

SA>Впрочем, было бы очень интересно узнать мнение/разъяснение самого Влада по поводу критики предложенного им решения.

Если я не ошибась, чуть выше в этом же треде пришли к выводу, что решение Влада не идеальное. И я не буду спорить, это действительно так. И ты прав, у него действительно плохой код, правила хороего тона не соблюдены.

SA>Тем более, что сам Влад, в отличие от его почитателя, в этом топике совершенно адекватно подискутировал и со скромным автором данного поста.

О Влад, осени же ты и меня свои знамением! И видел, у тебя есть меч!



Доволен? А теперь отстань.
Re[12]: Багодром: Реализация операторов сравнения
От: s.and  
Дата: 03.04.08 10:18
Оценка: -1
KS>Ок, поехали.

SA>>1. нет смысла ждать ответа Влада, т.к. ты заметил действительно опечатку;

SA>>2. зачем ты тогда вступил в дискуссию, если, как утверждаешь, хочешь только ответа по поводу опечатки, но не хочешь обсуждать качество предложенных Владом решений.
KS>Потому что Вы мне написали "ты не прав". Теперь Вы мне написали что я прав. Я своего от дискуссии добился.
Я написал, что ты прав только в контексте (неверного) примера Влада. А первоначально ты писал, что в ReferenceEquals важно приведение, без контекста. В итоге пришли к консенсусу, но только по этому вопросу.

По ходу дела всплыли и другие вопросы, по которым ты начал дискутировать, но как только оказалась под сомнением непогрешимость решений Влада, так ты сразу за его спину.

SA>>3. В твоей последней сентенции один из пунктов — наглая ложь. Вот она: "Мне пофигу авторитет Влада". Как только оказалось, что решение Влада, мягко говоря, не идеально, ты тебя тут же кончились аргументы, и ты тут же спрятался за спину своего великого гуру.

KS>Хорошо, это наглая ложь.
Пишешь правду, но неискренне.

SA>>Впрочем, было бы очень интересно узнать мнение/разъяснение самого Влада по поводу критики предложенного им решения.

KS>Если я не ошибась, чуть выше в этом же треде пришли к выводу, что решение Влада не идеальное. И я не буду спорить, это действительно так. И ты прав, у него действительно плохой код, правила хороего тона не соблюдены.
Пишешь правду, но неискренне.

KS>Доволен? А теперь отстань.

Недоволен. Т.к. см. выше.
Re[13]: Багодром: Реализация операторов сравнения
От: Kore Sar  
Дата: 03.04.08 10:21
Оценка:
s.and, Вы самый педантичный в мире человек, что я когда-либо встречал.
Re[14]: Багодром: Реализация операторов сравнения
От: Аноним  
Дата: 03.04.08 10:27
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>s.and, Вы самый педантичный в мире человек, что я когда-либо встречал.

Возможно.
Но мы обсуждали операторы сравнения, а в этой области не обойтись без пристального внимания к деталям. Иначе получается то, что Влад как раз и критиковал в своей неплохой статье.
Re[4]: Багодром: Реализация операторов сравнения
От: eugen1001  
Дата: 03.04.08 12:22
Оценка:
Здравствуйте, s.and, Вы писали:

SA>Например:

SA>сравнение myObj == null (с нетипизированным null) недопустимо, т.к класс MyObj реализует оператор ==. Выполните приведение к object ((object)myObj == null) или вызовите ReferenceEquals

А не проще сразу IsNull(object)?
... << RSDN@Home 1.2.0 alpha rev. 775>>
Re[12]: Багодром: Реализация операторов сравнения
От: SiAVoL Россия  
Дата: 03.04.08 12:30
Оценка: :))
Здравствуйте, Kore Sar, Вы писали:

KS>о Влад! Приди! Осени мое чело своим знамением!

Надо организовывать секту "Свидетелей Влада". Чую, будет иметь успех...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Re[5]: Багодром: Реализация операторов сравнения
От: s.and  
Дата: 03.04.08 12:50
Оценка:
SA>>Например:
SA>>сравнение myObj == null (с нетипизированным null) недопустимо, т.к класс MyObj реализует оператор ==. Выполните приведение к object ((object)myObj == null) или вызовите ReferenceEquals

E>А не проще сразу IsNull(object)?


Метод
public static bool object.IsNull(object obj)
не определен...

А если бы был, то это было бы сродни использованию CLS-совместимых static Equals, Add, Divide (вместо ==, +, / ) и т.д. вместо операторов. Т.е., совсем без операторов. Но вроде как такой код не совсем нагляден. С другой строны, если столько граблей из за этих операторов....
Re[4]: Багодром: Реализация операторов сравнения
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 12:57
Оценка:
Здравствуйте, s.and, Вы писали:

VD>> Вот тот же запрет на сравнение с null типов определяющих операторы сравнения дал бы очень многое.

SA>Да, это было бы элегантным решением. Причем, в существующем C#-стиле, когда компилятор запрещает какую-либо граблеопасную конструкцию для компиляции с выдачей соответствующих предупреждения и рекомендации.

Собственно, именно так и сделано в компиляторе Nemerle, о чем и было сказано в статье.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Багодром: Реализация операторов сравнения
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 13:03
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Вероятно вместо выделеного obj должен был стоять member.

KS>Я прав?

Да — это очепятка.

Если кто непонял почему надо использовать именно member, поясню...

Дело в том, что в CompareTo может быть передана ссылка на объект не того типа. Тогда оператор as (о граблях которого была отдельная статья) возвратит null и проверка на ссылку не пройдет. Это убережет от доступа по null-указателю и за одно приведет к верному результату — CompareTo возвратит -1.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Багодром: Реализация операторов сравнения
От: Kore Sar  
Дата: 03.04.08 13:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Kore Sar, Вы писали:


KS>>Вероятно вместо выделеного obj должен был стоять member.

KS>>Я прав?

VD>Да — это очепятка.


VD>Если кто непонял почему надо использовать именно member, поясню...


VD>Дело в том, что в CompareTo может быть передана ссылка на объект не того типа. Тогда оператор as (о граблях которого была отдельная статья) возвратит null и проверка на ссылку не пройдет. Это убережет от доступа по null-указателю и за одно приведет к верному результату — CompareTo возвратит -1.


О Влад! Вы здесь!

Влад, мы тут организовываем секту "Свидетей Влада". Вы не против?
Re[5]: Багодром: Реализация операторов сравнения
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 13:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>> Вот тот же запрет на сравнение с null типов определяющих операторы сравнения дал бы очень многое.

SA>>Да, это было бы элегантным решением. Причем, в существующем C#-стиле, когда компилятор запрещает какую-либо граблеопасную конструкцию для компиляции с выдачей соответствующих предупреждения и рекомендации.

VD>Собственно, именно так и сделано в компиляторе Nemerle, о чем и было сказано в статье.


Кстати, если бы компилятор C#-а предупреждал бы о том, что переменная не используется, ошибки можно было бы избежать. Тот же Немерловый компилятор такие предупреждения делает. Наскольк мне известно их делает и РеШарпер, но я им не пользуюсь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Багодром: Реализация операторов сравнения
От: s.and  
Дата: 03.04.08 13:11
Оценка:
VD>Дело в том, что в CompareTo может быть передана ссылка на объект не того типа. Тогда оператор as (о граблях которого была отдельная статья) возвратит null и проверка на ссылку не пройдет. Это убережет от доступа по null-указателю и за одно приведет к верному результату — CompareTo возвратит -1.

А можно ссылку на статью об "as"?
Re[4]: Багодром: Реализация операторов сравнения
От: Lloyd Россия  
Дата: 03.04.08 13:12
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Влад, мы тут организовываем секту "Свидетей Влада".


Это ты про себя "мы"?
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[7]: Багодром: Реализация операторов сравнения
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 13:13
Оценка:
Здравствуйте, s.and, Вы писали:

SA>Если obj не DropDownMember и не его наследник, то метод Влада с учетом твоего замечания возвратить -1, что не верно, как неверно и любое другое значение. Метод первым делом должен содержать проверку наподобие этой:


SA>
SA>if (obj == null)
SA>throw ArgumentNullException("obj");
SA>if (object.ReferenceEquals(obj as DropDownMember, null))
SA>throw new ArgumentException("Noncompatible type", "obj");
SA>


Это слишком радикальный подход. В таком случае коллекцию содержащую не DropDownMember отсортировать будет нельзя, а при исходном подходе просто все не DropDownMember окажутся вверху списка. Учитывая, что для списка членов типа лучше быть плохо отсортированным нежели отсутствующим, генерировать исключения лучше не стоит.

В общем, это решение должно возлагаться на программиста который реализует логику для конкретного случая.

ЗЫ

В общем, я смотрю на нас на все тут весна действует и всем поспорить охота.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Багодром: Реализация операторов сравнения
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 13:15
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Тут явно не хватает "глубокоуважаемого".


Я тут.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.