Перед игнорированием / голосование завершению этот вопрос я считаю это допустимым вопросом спросить, потому что ясность кода является важной темой обсуждения, это важно для написания удобного в сопровождении кода, и я был бы очень признателен за ответы от тех, кто столкнулся с этим прежде.
Я недавно столкнулся с этой проблемой, запросы LINQ могут стать довольно противными реальный быстрый из-за большого объема вложения.
Ниже некоторые примеры различий в форматировании этого, я придумал (для того же относительно несложного запроса)
Никакое форматирование
var allInventory = system.InventorySources.Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region }).GroupBy(i => i.Region, i => i.Inventory);
Поднятое форматирование
var allInventory = system.InventorySources
.Select(src =>
new {
Inventory = src.Value.GetInventory(product.OriginalProductId, true),
Region = src.Value.Region })
.GroupBy(
i => i.Region,
i => i.Inventory);
Форматирование блока
var allInventory = system.InventorySources
.Select(
src => new
{
Inventory = src.Value.GetInventory(product.OriginalProductId, true),
Region = src.Value.Region
})
.GroupBy(
i => i.Region,
i => i.Inventory
);
Форматирование списка
var allInventory = system.InventorySources
.Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region })
.GroupBy(i => i.Region, i => i.Inventory);
Я хочу придумать стандарт для форматирования linq так, чтобы оно максимизировало удобочитаемость и понимание и выглядело чистым и профессиональным. До сих пор я не могу решить, таким образом, я поворачиваю вопрос профессионалам здесь.
Я остановился на блочном форматировании. Некоторое время меня беспокоило чувство "пустого пространства", но в конечном итоге все сочли, что оно лучше читается большим количеством людей. Поскольку мы уже ставили скобки на новые строки, это просто лучше сочетается с остальным кодом. Кроме того, здесь меньше возможностей для интерпретации. Мы храним файл cs в публичном хранилище, в котором есть примеры форматирования... когда кто-то придумывает уникальный кусок linq, мы добавляем его в файл... это очень помогает новичкам.
Для меня это зависит от длины запроса, который мне нужно сделать. Для коротких простых операторов, таких как базовый выбор или простые объединения, я буду использовать форматирование списка, потому что оно делает его приятным и легким для чтения, не перегружая мой код множеством строк.
Если у меня есть довольно сложный или более крупный оператор linq, я использую блочное форматирование, чтобы другим людям было легче читать и следить за тем, что я пытался сделать.
Я не думаю, что иметь разное форматирование для разных операторов - плохая практика, если вы согласны с тем, как вы подходите к этому.
Мое форматирование:
var allInventory = system.InventorySources
.Select(src => new
{
Inventory = src.Value.GetInventory(product.OriginalProductId, true),
Region = src.Value.Region
})
.GroupBy(
i => i.Region,
i => i.Inventory
);
Примечания:
Это очень субъективно.
Я использую метод форматирования блоков.
Я также проверяю код на Stylecop и убеждаюсь, что он не выдает никаких предупреждений stylecop.