在设计一个类(在 C# 或任何 oop 语言中)时,我总是会困惑是否应该在类中定义属性并在类的方法中使用它,或者只使用方法参数就好。
我在第一种方式中发现的一个问题是它会产生依赖性(例如,如果调用者忘记将值分配给属性等怎么办......)。
例如我正在设计一个“myexcel”类,它可以“导出到 cvs”、“获取 XML”、“格式化 excel 并保存”
这里我应该将“ExcelPath”作为 myexcel 的属性还是应该将其作为参数传递给 GetXml 、 export 、 format 方法?
最佳答案
属性应该定义与对象关联的状态 - 限定一个实例与另一实例的状态信息。将对于单个函数调用有效的时间信息存储到对象状态中是没有意义的。换句话说,如果您将某些东西作为对象属性,因为它在某些方法中使用,那么只有在多个调用中使用相同的属性值或在多个方法中使用该属性时,它才有意义。
因此,在您的特定情况下,filePath 应该是所有保存/导出方法的参数,因为从使用角度来看,对象实例代表一些数据,而保存/导出只是序列化它的一种方法。文件路径仅对该调用有效 - 它可能会在多次调用时发生变化。
关于c# - "Parameter passing to function"还是 "Assigning values to Properties and then using them in function"是更好的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731816/