今天被问到为什么我在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();


但是,我对这些答案不太有信心。有人愿意启发我吗?

最佳答案

关于性能,如果您无法显示增加的幅度,则不支持您的主张。有人还可能认为,静态方法调用与实例方法调用的性能提升与往返旅行和数据库时间的增长微不足道。

您还锁定了实现(或至少迫使使用者进行了一些更难修改的事情)。如果您将静态方法和代码丢失到接口,则不同层次的测试人员和开发人员可以构建模拟,因此不会被迫使用您提供的任何模拟。

10-06 04:32