Сообщение Re: Отладка многострочных функциональных конструкций от 06.04.2023 15:14
Изменено 06.04.2023 15:20 IT
Re: Отладка многострочных функциональных конструкций
Здравствуйте, merge, Вы писали:
M>Часто попадаю в коде на такие длинные конструкции
Из данного примера не понятно, что это: linq to objects или что-то типа EF/linq2db. Если второе, то отлаживать нужно не отдельные методы выражения, а смотреть какой генерируется SQL и отлаживать уже его. Если же это linq to object и вот прямо совсем совсем без отладки ну никак, то нормальный ремесленник/мастеровой всегда может смастерить себе какую-нибудь приспособу на коленке. Возьмём к примеру метод GroupBy, нам понадобится его сигнатура, далее пишем по ней следующий конвертик:
Далее в своём выражении меняем GroupBy на DebugGroupBy и дебажим вволю.
Но это если совсем припекло. В Enumerable методов очень много и сразу покрыть всё вряд ли появится желание.
M>Часто попадаю в коде на такие длинные конструкции
Из данного примера не понятно, что это: linq to objects или что-то типа EF/linq2db. Если второе, то отлаживать нужно не отдельные методы выражения, а смотреть какой генерируется SQL и отлаживать уже его. Если же это linq to object и вот прямо совсем совсем без отладки ну никак, то нормальный ремесленник/мастеровой всегда может смастерить себе какую-нибудь приспособу на коленке. Возьмём к примеру метод GroupBy, нам понадобится его сигнатура, далее пишем по ней следующий конвертик:
namespace DebuggableEnumerable
{
#if !DEBUG
[MethodImpl(MethodImplOptions.AggressiveInlining)]
#endif
public static IEnumerable<IGrouping<TKey,TSource>> DebugGroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector)
{
#if DEBUG
var before = source.ToList();
var after = source.GroupBy(keySelector).ToList();
return after;
#else
return source.GroupBy(keySelector);
#endif
}
}
Далее в своём выражении меняем GroupBy на DebugGroupBy и дебажим вволю.
Но это если совсем припекло. В Enumerable методов очень много и сразу покрыть всё вряд ли появится желание.
Re: Отладка многострочных функциональных конструкций
Здравствуйте, merge, Вы писали:
M>Часто попадаю в коде на такие длинные конструкции
Из данного примера не понятно, что это: linq to objects или что-то типа EF/linq2db. Если второе, то отлаживать нужно не отдельные методы выражения, а смотреть какой генерируется SQL и отлаживать уже его. Если же это linq to object и вот прямо совсем совсем без отладки ну никак, то нормальный ремесленник/мастеровой всегда может смастерить себе какую-нибудь приспособу на коленке. Возьмём к примеру метод GroupBy, нам понадобится его сигнатура, далее пишем по ней следующий конвертик:
Далее в своём выражении меняем GroupBy на DebugGroupBy и дебажим вволю.
Но это если совсем припекло. В Enumerable методов очень много и сразу покрыть всё вряд ли появится желание.
M>Часто попадаю в коде на такие длинные конструкции
Из данного примера не понятно, что это: linq to objects или что-то типа EF/linq2db. Если второе, то отлаживать нужно не отдельные методы выражения, а смотреть какой генерируется SQL и отлаживать уже его. Если же это linq to object и вот прямо совсем совсем без отладки ну никак, то нормальный ремесленник/мастеровой всегда может смастерить себе какую-нибудь приспособу на коленке. Возьмём к примеру метод GroupBy, нам понадобится его сигнатура, далее пишем по ней следующий конвертик:
static class DebuggableEnumerable
{
#if !DEBUG
[MethodImpl(MethodImplOptions.AggressiveInlining)]
#endif
public static IEnumerable<IGrouping<TKey,TSource>> DebugGroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector)
{
#if DEBUG
var before = source.ToList();
var after = source.GroupBy(keySelector).ToList();
return after;
#else
return source.GroupBy(keySelector);
#endif
}
}
Далее в своём выражении меняем GroupBy на DebugGroupBy и дебажим вволю.
Но это если совсем припекло. В Enumerable методов очень много и сразу покрыть всё вряд ли появится желание.