今天被问到为什么我在asp.net应用程序中使用这样的代码用于我的bll类:
public class StudentBll
{
public static DataTable GetStudents()
{
return DBHelper.ExecuteSp("GetStudents");
}
public static DataTable GetStudentById(int studentId)
{
return DBHelper.ExecuteSp("GetStudentById", studentId);
}
}
而不是
public class StudentBll
{
public DataTable GetStudents()
{
return DBHelper.ExecuteSp("GetStudents");
}
public DataTable GetStudentById(int studentId)
{
return DBHelper.ExecuteSp("GetStudentById", studentId);
}
}
我唯一想到的就是那个
A)表现略有增加(不确定具体细节)
B)可读性
StudentBll.GetStudents();
而不是
StudentBll studentBll = new StudentBll();
studentBll.GetStudents();
但是,我对这些答案并不太自信。有人想开导我吗?
答案 0 :(得分:3)
关于性能,如果您无法显示增加的内容,则它不支持您的声明。人们还可以争辩说,静态方法调用与实例方法调用的性能增益可以忽略不计往返旅行&数据库时间。
您还锁定了您的实施(或者至少强迫消费者做一些难以修改的事情)。如果您丢失了静态方法和代码到接口,不同层级的测试人员和开发人员可以构建模拟,这样他们就不会被迫使用您提供的任何内容。
答案 1 :(得分:2)
当我看到公共静态方法时,可测试性是我想到的第一件事。也忘了oop - 这里没有继承(类和接口),因此你没有类实例。没有继承意味着没有抽象。没有抽象意味着紧密耦合。