nhibernate Linq

Вы вводите новые методы, даже если их вызывают только один раз, чтобы ограничить максимальную цикломатическую сложность.

Вдобавок ко всему, я могу перечислить множество причин для извлечения методов и несколько, если таковые имеются, для их объединения.

  • Очевидный, DRY, он же DIE . Я следовал этой философии, пока она не стала крутой аббревиатурой. Я не думаю, что когда-либо нужно, по любой причине, дублировать или копировать и вставлять код, независимо от того, насколько он короткий. Если вы это сделаете, вы завариваете кошмар.
  • Ограничить цикломатическую сложность . Гораздо лучше иметь 3 понятных метода, чем один запутанный метод. Это правило и другие применимы, даже если новый извлеченный метод вызывается только один раз
  • Извлечение единицы функциональности для модульного тестирования
  • Чтобы все методы были видны в редакторах без прокрутки

Кстати, я мог бы предложить изменить язык. « Создание нового метода » звучит как добавление чего-либо к коду и его увеличение и усложнение. Но « извлечение метода » - это то, что действительно происходит, когда вы реорганизуете, как мы надеемся, превосходный дизайн. Предполагая, что вы все равно должны иметь эту функциональность, этот метод всегда был там, он был просто похоронен внутри другого ...

5
задан Craig 29 May 2009 в 02:58
поделиться

2 ответа

Пытались ли вы проверить, что c.Disciplines не равно нулю, прежде чем выполнять Any на нем? Предположительно дисциплины не равны нулю, но вы также можете это проверить.

 (c.Disciplines != null
    && c.Disciplines.Any(d => disciplines != null
                               && disciplines.Contains(d)))
1
ответ дан 14 December 2019 в 13:45
поделиться

Измените

user.Disciplines.ToArray<Discipline>()

на

user.Disciplines.ToList<Discipline>()

NHibernate понимает .Contains () вызывает конкретные объекты List .

5
ответ дан 14 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: