Здравствуйте, Sinix, Вы писали:
S>И получаем возможность писать badsmell вида
S>S>Code.NotNull(2, "Why not?");
S>
Badsmell писать и сейчас можно
Code.NotNull(new object(), "Why not?");
В плане абусурдности на одной полке. Зато когда надо писать код, упираешься в то, что generic обязан быть классом, либо писать по старинке
Например, расширение dictionary.TryAdd и ему подобные, ключ обязан быть не-null, но написать Code.NotNull мы не можем... Вот и получается, кто в лес, кто по дрова.
S>Мы пишем инфраструктурный код для 99% пользователей, не для единиц спецов. Поэтому чем проще и однозначнее API, тем лучше.
Думается, что человек воспринимающий TKey key == null не запутается и при виде Code.NotNull, скорее наоборот, удивится почему нельзя?
ЗЫ. С другой стороны, у нас в компании все "проаннотиравано", поэтому NotNull-ассертами пользуемся только если ошибка не проявит себя сразу при вызове метода, а вообще ждем C#8 с его nonnullable типами
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>