【问题标题】:Class with just Shared functions - Why is it bad?只有共享函数的类 - 为什么不好?
【发布时间】:2009-10-01 14:30:03
【问题描述】:

我有一个名为 MembershipHelper 的类,我在我的 ASP.NET 项目中使用它。它看起来像这样:

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

我在某处读到,拥有一个只包含共享函数的类并不是一个好主意——但我不记得在哪里。

为什么会这样不好,我该如何改进?

谢谢

【问题讨论】:

    标签: asp.net class class-design shared


    【解决方案1】:

    从您用于函数的命名看来,所有函数都描述了用户的属性(例如,用户是否是管理员)。

    因此,将这些函数替换为用户对象的属性或让用户实现 IRole 接口似乎更自然。

    ** 我并不是说你的设计是好是坏。根据上下文,这样的辅助类可能非常合理。

    【讨论】:

      【解决方案2】:

      共享函数类似于静态函数,而静态函数又类似于全局函数或对象。

      您在示例中所做的基本上是添加一些重定向和抽象,我认为这对于 Helper/Extension 类来说很好。

      【讨论】:

      • ...拥有全局函数很糟糕?
      • 链接的文章讨论了全局变量,而不是全局可用的方法。这是恕我直言的区别。我认为静态辅助函数一般没有任何问题,它们经常在 .NET Framework 中使用,例如文件。存在。
      • 但是您在回答中说他们很好?还是我错过了什么?
      • 在你所拥有的帮助或扩展方法中,在我的书中它们通常是可以接受的。
      猜你喜欢
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-10-21
      • 2015-01-04
      • 1970-01-01
      相关资源
      最近更新 更多