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

public static メソッドを見ると、最初に頭に浮かぶのはテスト容易性です。また、oop のことも忘れてください。ここには (クラスとインターフェイスの両方で) 継承がないため、クラス インスタンスはありません。継承がないということは、抽象化がないということです。抽象化がないということは、密結合を意味します。

于 2012-04-30T22:26:55.330 に答える