1. Починил.
2. Если без матерных комментариев: ребят, что за невероятная хрень у нас с проектом?
* Коммитов — 0.
* Обещанные исправления — все забили.
* Документация по фичам — 0.
* Соглашения по общему стилю кода — не, не слышал.
* Заваленная сборка два дня лежит — никто не чешется.
По свежедобавленному ToDiagnosticString() — его надо или поправить, или в experimental.
Во-первых,
using CodeJam.Mapping; в EnumerableExtensions — это вообще перебор уровня "для работы с строками тянем код из WPF".
По коду — эту штуку надо в Mapping и спрятать.
Во-вторых, как насчёт тестов / реальных сценариев использования?
UPD слона я и не заметил. TestDiagnosticString2 падает на культурах с decimal separator != '.'.
Да как так-то
Ладно фиг с ним, что тесты кривые, с самим кодом тоже не ок.
Сразу же косяки видны типа
if (value == null) values[i] = "<NULL>";
else if (type == typeof(decimal)) values[i] = ((decimal) value).ToString("G");
else if (type == typeof(DateTime)) values[i] = ((DateTime)value).ToString("yyy-MM-dd hh:mm:ss");
else values[i] = value.ToString();
остальные типы из TypeCode неплохо бы добавить, да и форматировать с инвариантной культурой тогда уж.
Ну и откровенные некрасявости типа
foreach (var values in itemValues)
for (var i = 0; i < lens.Length; i++)
lens[i] = Math.Max(lens[i], values[i].Length);
void PrintDivider()
{
foreach (var len in lens)
stringBuilder.Append("+-").Append('-', len).Append("-");
stringBuilder.Append("+").AppendLine();
}
PrintDivider();
тож надо убрать. Функция посредине кода, да ещё и с замыканиями — фу-фу-фу же.
Сорри, я понимаю, что тон резковат, но такие вещи катят для внутреннего проекта, для готовой библиотеки компонентов планку надо подтянуть