我有3个方法这些方法相同只有一些参数会改变我想写一个方法怎么写我
catch :from_inner do
if condition A
if condition A.1
# ...
elsif condition A.2
# ...
else
throw :from_inner
end
# ...
end
end
我认为编写1方法非常简单。思考是参数有不同的id .. 感谢。
答案 0 :(得分:1)
避免基于参数的条件逻辑。这导致脆弱的代码,因为必须测试每个参数组合以被认为是可靠的。这导致复杂的代码很容易出错。使用更简单的单一用途方法通常更可靠,更易于理解和维护。
例如,给出您的示例并假设“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";
方法应该努力做一件事,做得好。如果需要,易于理解和故障排除。在方法中添加参数和条件代码只会使代码更加不稳定,并为bug留下空白。最后,当初始方法可以简化时,它不会使代码更短。
答案 1 :(得分:0)
如果签名相同,则不能重载方法。
您有两种方法具有相同的签名:
public string checkexist(int id)
您可以做的是重命名您的方法,如下所示:
public interface WriteSomethingHere {
public boolean isStudentExist(int id);
public boolean isTeacherExist(int id);
public boolean isClassExist(int id);
}
答案 2 :(得分:0)
我刚刚使用通用仓库找到答案
public T GetEntity<T>(int Id)
where T : class
{
using (MyEntities rpContext = new MyEntities())
{
return rpContext.Set<T>().Find(e => e.Id == Id);
}
}
之后
var entityStudent = GetEntity<Student>(1);
var entityTeacher = GetEntity<Teacher>(1);
var entityClasses = GetEntity<Classes>(1);
答案 3 :(得分:-1)
您有创建枚举
Public Enum ParameterStaus:short
{
Student=1,
Teacher=2,
Classess=3
}
public string method2(int id.ParameterStatus status)
{
if(status==ParameterStatus.Teacher)
{
var getAllTeachers = rep.Teachers.Where(e => e.TeacherId == id).ToList();
foreach (var item in getAllTeachers )
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
}
Else if(status==ParameterStatus.Student)
{
var getAllStudents = rep.Students.Where(e => e.StudentId == id).ToList();
foreach (var item in getAllStudents)
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
Else
{
var getAllClasses = rep.Classes.Where(e => e.ClassId == id).ToList();
foreach (var item in getAllClasses)
{
if (item.isActive != true)
return "Error";
}
return "OK";
}
}