C# 为单个函数创建类-良好的设计

C# 为单个函数创建类-良好的设计,c#,C#,我正在将C程序转换为C。 该程序使用一个名为PatterRecognition(image、param1、param2、param3等)的函数,该函数不能包含在“image”类中。 在C#中,我可以使用一个方法创建一个类,比如PatternRecognitor,例如Execute(image、param1、param2、param3等许多其他方法) 我的问题是:由于我不喜欢在程序的多个部分调用函数时管理所有这些参数,是更好的设计使它们成为PatternRecognitor类的成员,并使用sett

我正在将C程序转换为C。
该程序使用一个名为PatterRecognition(image、param1、param2、param3等)的函数,该函数不能包含在“image”类中。
在C#中,我可以使用一个方法创建一个类,比如PatternRecognitor,例如Execute(image、param1、param2、param3等许多其他方法)


我的问题是:由于我不喜欢在程序的多个部分调用函数时管理所有这些参数,是更好的设计使它们成为PatternRecognitor类的成员,并使用setter/getter函数设置它们?(或者只是一个“SetParam”函数?

当您有许多参数随着对函数的调用而改变时。在它们自己的类中封装这些参数通常是可行的

你可以创建这样的东西

public class RecognizerOptions
{
    public string Name { get; set; }
    // ....
}

public class PatternRecognizer
{
    public void Execute(RecognizerOptions options)
    {
        // do work
    }
}

您还可以为
RecognizerOptions
创建一个工厂类,使其更易于维护。

对函数参数使用
RecognizerOptions
可以自行解决问题——现在不需要专用的
patternerecognizer
来包含函数。@nmclean将业务逻辑与多选项的问题使得维护更容易,代码更可读。它不是问题的真正解决方案,更多的是一种编码实践或设计模式。是的,将选项封装在类中会带来维护/可读性方面的好处,但是第二个类,
patternerecognizer
,是多余的。我们可以改变<代码>模式识别> <代码>图像<代码>接受一个<代码>识别器选项。请注意阅读,因为它涵盖了很多可能涉及到的主题(包括这一点)。