3

ASP.NETプロジェクトで使用しているMembershipHelperというクラスがあります。次のようになります。

Public Class MembershipHelper

    Public Shared Function IsMultiStoreUser() As Boolean
     return Roles.IsUserInRole(....)
    End Function

    Public Shared Function IsAdmin() As Boolean
     return Roles.IsUserInRole(....)
    End Function

    Public Shared Function IsReaderOnly() As Boolean
     return Roles.IsUserInRole(....)
    End Function

End Class

共有関数だけ​​でクラスを作成するのは良い考えではないことをどこかで読みましたが、どこにあるのかは覚えていません。

なぜこれが悪いのですか、どうすれば改善できますか?

ありがとうございました

4

2 に答える 2

3

関数に使用した名前から、すべての関数がユーザーのプロパティ(たとえば、ユーザーが管理者であるかどうか)を記述しているように見えます。

したがって、これらの関数をユーザーオブジェクトのプロパティに置き換えるか、ユーザーにIRoleインターフェイスを実装させる方が、より自然に思えます**。

**あなたのデザインが良いか悪いかを言っているのではありません。コンテキストによっては、このようなヘルパークラスは非常に合理的かもしれません。

于 2009-10-01T14:37:03.817 に答える
2

共有関数は静的関数のようなものであり、静的関数はグローバル関数またはオブジェクトのようなものです。

この例で基本的に行っているのは、リダイレクトと抽象化を追加することです。これは、ヘルパー/拡張クラスには問題ないと思います。

于 2009-10-01T14:32:00.123 に答える