我之前使用Matlab,没有面向对象编程的背景,现在想要以最佳实践的方式在C#中执行一些我习惯的操作。
我有一个类,它从数据源导入数据,并将其格式化为包括整数数组在内的其他内容。我将要对这个数组执行一些操作。为了简单起见,假设我想计算所有值的平均值。我认为,我有三个选择:
- 数组是MyClass的一部分,因此我可以扩展MyClass以返回MyArray的平均值。
double arrayAverage=MyClass.ArrayAve;
我可以开发一个静态类,通过
double arrayAverage= zotty.arrayMath.average(MyArray);
来访问平均值。显然有一种方式可以继承或接口,以创建一个专门执行此类操作的类,我将能够通过实例化这个新类并传递数组来访问它:
OperatorClass oc = new OperatorClass();
oc.data=MyClass.MyArray;
double arrayAverage = oc.ArrayAverage();
扩展类似乎有风险,因为它还负责导入和格式化数据。如果我也将所有数据处理添加到其中,它可能会变得非常庞大,并且其他人很难与我一起添加和处理。
未来的代码将需要对数组执行更复杂的操作,而我目前不知道它们会是什么。我将在未来的程序中使用一些基本操作,这将作为静态类的一部分非常有用,但是复杂的操作则会变得多余。
专门执行数据处理的单独类使导入/格式化类保持隔离。它可以提供通用和特定的功能,但代价是在代码中实例化另一个变量,这对我来说有点凌乱。
如果您对此有想法,我会感激您的意见!
double funkyResult = myObject.MyArray.FunkyFunction()
等。 - LukeH