1

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

然而,我对这些答案并不太自信。有人愿意开导我吗?

4

2 回答 2

3

关于性能,如果您无法显示增加的内容,则它不支持您的主张。也有人可能会争辩说,静态方法调用与实例方法调用的性能增益相比,往返旅行和数据库时间的性能增益可以忽略不计。

您还锁定了您的实现(或至少迫使消费者做一些更难修改的事情)。如果您丢失了接口的静态方法和代码,不同层的测试人员和开发人员可以构建模拟,这样他们就不会被迫使用您提供的任何内容。

于 2012-04-30T22:25:54.680 回答
2

当我看到公共静态方法时,可测试性是我首先想到的。还要忘记 oop - 这里没有继承(类和接口),因此您没有类实例。没有继承意味着没有抽象。没有抽象意味着紧密耦合。

于 2012-04-30T22:26:55.330 回答