写共用代码的最佳位置是静态助手类还是基类?

3
我需要编写大量代码,这些代码将在三个asp.net页面中使用。我想知道关键点,以便决定是创建静态帮助类还是创建基类以用于公共代码。我同意创建单个帮助类与创建多个帮助类必须仔细考虑各种因素,如性能等,但问题仍然存在。您可以认为我是一个聪明的编码人员,可以创建完美数量的帮助类。我认为我只会从这三个asp.net页面中使用这些代码。感谢所有答案,但我需要更多输入,请提供更具体的要点。谢谢。

听起来像是上帝对象(http://en.wikipedia.org/wiki/God_object)。我希望你不是在建议创建一个名为`Helper`的单个静态类,并将所有这些“常见”功能都放在其中。 - Yuck
这完全取决于代码的功能以及页面之间的关系。你可以使用帮助类(静态或非静态),继承,甚至其他方法。为了得到正确的答案,你需要提供更多信息。 - madd0
我不打算创建单个静态辅助类或上帝对象。 - Imran Rizvi
2个回答

5
如果这是一些所有三个ASP.NET页面都共享的代码而不是其他代码,那么一个基类是一个好主意。通过使方法受保护,可以避免将代码暴露给“外部世界”,并定义了方法应该被使用的上下文。它们只能从继承了特定基类型的ASPX页面中被调用,其中这些方法具有意义。即使是概念上无效的情况下,辅助方法也可以通过传递正确的参数在代码的任何地方被调用。
如果这是将来会在不同地方调用的代码(例如验证电子邮件函数),那么静态辅助类可能会有所帮助。
但是,如果你选择辅助类,你仍然需要决定要创建多少辅助类。从维护的角度来看,将所有辅助函数都放在一个类中可能不是一个好主意。

如果页面看起来相似,那么MasterPage可能会很有效。无论如何,当您有一个具有功能“层”的页面时,情况可能会变得棘手 - 需要成为WhoozitPage的页面A,需要成为DingleHopperPage的页面B,以及实际上需要两者功能的页面C,除了您不能进行多重继承。 - sq33G
由于多重继承确实不是一个选项,因此您应将其移至单独的辅助类中,因为“并非所有三个ASP.NET共享代码”。 其中只有两个相交。 - Wouter de Kort
然后它将选择如上所述的基类。 - Wouter de Kort
你能否更详细地解释一下为什么在这种情况下要选择基类? - Imran Rizvi
如果基类在 Dll A 中,而其他三个 ASPX 页面在三个不同的 Dlls B、C、D 中,则 BCD 将引用 A,当部署时,A 程序集将与 BCD 一起部署。它们不会被合并或者什么的,只是一起部署。 - Wouter de Kort
显示剩余2条评论

1
创建一个基础页面并从中继承,然后在基础页面上放置您的辅助方法和属性。

如果您喜欢在基础页面上编写代码,那么为什么我要将这些代码移动到帮助程序并从基础页面调用帮助程序呢?因为该代码不会再次使用,所以为什么不仅在基础页面上编写它呢? - Imran Rizvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接