Re[2]: 2IT: Предложения по свежим сбросам
От: Sinix  
Дата: 04.05.16 14:48
Оценка:
Здравствуйте, IT, Вы писали:

S>>В exception.GetText() есть мелкий косяк: в конце текста всегда пустая строка.

IT>Не всегда. Только после FusionLog была пустая строка, в остальных слочаях только перевод строки. Исправлю.
Криво написал. В общем по-моему и перевода строки тоже не должно быть


S>>3.1. Надо бы использовать HashCode.Combine() — там используется стандартный алгоритм из Tuple.

IT>То что генерируется сейчас есть стандартный код анонимных типов. Мне в принцмпе по барабану, что скажете то и сгенерируем.
Ага, мой фейл
Я за тюплы, т.к. они будут чаще использоваться. Особенно после c#7. Но эт только моё мнение, подождём остальных


S>>3.2. После 3.1. рандомный seed можно убрать, он на распределение особо не влияет

IT>Где именно? В Objects.Random или а GetHashCode компаратора?
В GetHashCode компаратора.
Если оставлять, то надо его получать один раз и запоминать в static-поле (аля EnumHelper.Holder<T>). А то последовательные вызовы несовместимые компареры будут генерить.


S>>3.3. Было бы круто допилить comparer под реальные сценарии — в 99.99% случаев надо сравнивать по определённым полям. Ну, т.е. нужен builder с синтаксисом аля

IT>Это легко делается с помощью анонимных типов.
Вариант конечно, но он не все сценарии покрывает. Например, если надо свой comparer в словарик подсунуть или ещё где переиспользовать.
В общем ок, пусть тогда висит в списке "добавить, как идеи закончатся"


S>>И, возможно, закинуть методы для компарера в Operators<T>, сам код с генерацией — в OperatorsFactory<T> — но это только как всё устаканится.

IT>Я исходил из соображений того, что EqualityComparer находится в System.Collections.Generic, поэтому положил всё в Collections.
Ага, с этой точки зрения фигню предложил. Вычёркиваем.


S>>3.4. С учётом 3.3. А не замахнуться ли по аналогии ещё и на IComparer<T>?

IT>Да без проблем. Пожелания отдельным списочком и усё будет у порядке, даже лучше!

Ок, тоже к списку добавлю.


S>>4. AggregateOrDefault — надо бы докинуть перегрузки с TAccumulate, как в стандартном Aggregate().

IT>Я это даже сделал, потом выкинул. Там получается нужно первый элемент всегда преобразовывать к TAccumulate. Если это устраивает, то добавлю.
Если ничего не забыл, то TAccumulate seed отдельным аргументом передаётся. AVK эту перегрузку уже добавил.


IT>Кстати, замена is на as по моему не лучшая идея, т.к. оставляет лишнюю переменную в области видимости где она больше ни разу не используется. А последующей логике ещё и добавляет уровни вложенности. Сравни:


А это решарпер насоветовал. Я это место видел, если бы сам правил — 100% оставил бы как есть.
Спорить как правильно не возьмусь, т.к. у меня очень предвзятое мнение по поводу аналайзеров r#, в основном нецензурное
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.