实例类与扩展方法的静态助手类与静态方法

Zac*_*ack 4 c# oop extension-methods static-methods helpers

我正在寻找以下问题的最佳实践方法.

我希望各国人民对于他们将使用哪种方法,以及为什么会出现以下情况:

Class当指定DateTime时,我有一个由工厂实例化的.

我应该使用哪种方法?

static"helper"class:Class c = ClassHelper.GetClass(DateTime);
实例类型的静态方法:Class c = Class.GetClass(DateTime);
static extension class/method:Class c = DateTime.GetClass();

目前我更倾向于使用静态助手类,因为我之前从未采用过在实例类上使用静态工厂方法的方法,但对我来说,在类上使用静态方法这样做似乎有意义吗?

在单元测试或组织测试时,我应该考虑哪些因素?

当我读到扩展方法应该谨慎使用时,我已经避开了扩展方法,通常如果你无法访问你正在扩展的源代码?

干杯,

詹姆士

cdi*_*ins 5

我有一个Class,它在指定DateTime时由工厂实例化.我应该使用哪种方法?

  1. static"helper"类:Class c = ClassHelper.GetClass(DateTime);
  2. 实例类型的静态方法:Class c = Class.GetClass(DateTime);
  3. static extension class/method:Class c = DateTime.GetClass();

我的建议是遵循可能有效的最简单的原则和代码凝聚力.

这意味着避免扩展和辅助类,只需将工厂函数放在Class类定义中.除此之外,人们通常会提供工厂功能.