Избегайте условной логики, основанной на аргументах. Это приводит к хрупкому коду, потому что каждая комбинация параметров должна быть проверена, чтобы считаться надежной. Это приводит к сложному коду, который легко подвержен ошибкам. Наличие простых одноцелевых методов обычно намного надежнее, их легче понять и поддерживать.
Например, учитывая ваш пример и предполагая, что «rep» был DbContext вашего экземпляра ...
public bool IsActiveStudent(int id)
{
bool result = rep.Students.Any(x => x.StudentId == id && x.IsActive);
return result;
}
public bool IsActiveTeacher(int id)
{
bool result = rep.Teachers.Any(x => x.TeacherId == id && x.IsActive);
return result;
}
public bool IsActiveClass(int id)
{
bool result = rep.Classes.Any(x => x.ClassId == id && x.IsActive);
return result;
}
Это могут быть, по сути, однострочники, просто возвращая результат .Any (). Я склоняюсь к тому, чтобы сначала выбрать результат в переменную и вернуть его в отдельной строке, так как это облегчает определение точки останова и проверку.
Если вам нужно вернуть строку «Ok» вместо «Error», тогда:
return result ? "OK" : "Error";
Методы должны стремиться делать что-то одно и делать это хорошо. Легко понять и устранить неполадки в случае необходимости. Добавление параметров и условного кода внутри метода просто делает код более изменчивым и оставляет возможности для ошибок. В конце это не делает код намного короче, когда первоначальный метод может быть упрощен.