将功能放在适当的类中

时间:2012-02-09 15:58:36

标签: c#

public static FirstObjectType GetObject(SecondObjectType secondobjectType) 
{
         do something
}

我应该把这个功能放在哪里?我应该在代码可读性,习俗和传统方面将它放在SecondObjectType类或FirstObjectType类中吗?函数是否应该包含在返回类或参数类中?

感谢您的回答。

3 个答案:

答案 0 :(得分:2)

我通常将该方法放在与该方法的返回类型具有相同类型的类中。

例如:

public static FirstObjectType GetObject(SecondObjectType secondobjectType) 
{
         do something
}

将进入FirstObjectType类。

或者,您可以使用工厂模式并拥有一个工厂来获取所需的对象。这可以为您提供与以下内容类似的代码:

FirstObjectTypeFactory.GetObject(SecondObjectType secondObjectType)

然后你总是知道哪个工厂根据它的返回类型来获取对象。

答案 1 :(得分:1)

这是模糊回答的方式,但我会给出一些一般提示

如果您有FirstObjectTypes的集合并且正在尝试找到与SecondObjectType匹配的集合,则它属于拥有该集合的类。这可能是工厂模式。

如果您始终在创建新的FirstObjectType,那么它可能只是FirstObjectType的构造函数。

SecondObjectType是否必须了解FirstObjectType?如果是这样,那么我会考虑将其作为SecondObjectType的方法。

还有一百万个其他场景,并且没有一个适合所有场景。

答案 2 :(得分:0)

我将为此创建一个扩展方法。

只需在签名

中添加即可
public static FirstObjectType GetObject(this SecondObjectType secondobjectType) 
{
    //do something
}

之后你可以这样做:

SecondObjectType sobj = new SecondObjectType()
//code
FirstObjectType  fobj = sobj.GetObject();

并将其与我的其他扩展方法文件(如ExtensionMethods.cs)一起使用。 或者,如果包含GetObject方法的类也是静态的,则将它放在同一个类中(在本例中为SecondObjectType的类)