Как я могу объединить методы ниже? и должен ли я на самом деле сделать это?Объединить два метода в один
public IQueryable<ItemDTO> RepGetMonthItems(string inOut, string planFact, int month)
{
return GetItemsWithCategory().
Where(i => i.InOut.Equals(inOut)).
Where(i => i.PlanFact.Equals(planFact)).
Where(i => i.DateTime.Month.Equals(month));
}
public IQueryable<ItemDTO> RepGetYearItems(string inOut, string planFact, int year)
{
return GetItemsWithCategory().
Where(i => i.InOut.Equals(inOut)).
Where(i => i.PlanFact.Equals(planFact)).
Where(i => i.DateTime.Year.Equals(year));
}
Надеемся, что различные ответы показали, что они могут быть объединены в один, но в итоге вам становится сложнее читать код, и у вас будет один метод, который делает две вещи. Так что придерживайтесь того, что у вас есть. –
Я не согласен. Вы можете сделать гораздо лучше, не нарушив правило «сделать одну вещь». Сохраняя это так, как сейчас, теперь просто нарушает DRY. – Baldrick
@ Baldrick, DRY необходимо применять с осторожностью, так как не повторяющийся сам ведет к сцеплению.Это пример того, где лучше повторять себя, чтобы все было просто, хотя см. Мой комментарий к вашему ответу. –