我有一个类'数据',它使用getter访问某些数组.如果数组为null,那么我希望Data访问该文件,填充数组,然后返回特定值.
现在这是我的问题:
在创建getter和setter时,您是否也应该使用相同的访问器属性作为访问该阵列的方式(在本例中)?或者你应该直接访问数组?
我在类中使用访问器的问题是,当调用类在Data.array中查找某些信息时,我得到无限循环,getter发现数组为null,所以从文件中获取它,并且该函数结束再次从Data中调用getter,数组再次为null,我们陷入无限循环.
编辑:
那么对此没有官方立场吗?我看到不使用具有文件访问权限的Accessors的智慧,但是你们中的一些人说要始终在类中使用访问器,而其他人则说从不使用类中的访问器......... ...................................
我同意krosenvold,并想稍微概括一下他的建议:
不要将Property getters和setter用于昂贵的操作,例如读取文件或访问网络.对显示昂贵的操作使用显式函数调用.
通常,类的用户不会期望简单的属性检索或赋值可能花费很多时间.
这也是Microsoft的框架设计指南中的建议.;
在以下情况下,请使用方法而不是属性.
该操作比字段集慢几个数量级.如果您甚至考虑提供异步版本的操作以避免阻塞线程,则很可能该操作太昂贵而无法成为属性.特别是,访问网络或文件系统的操作(初始化除了一次)应该最有可能是方法,而不是属性.
我认为总是使用访问器是一个好主意.然后,如果在获取或设置属性时需要任何特殊逻辑,则您知道所有内容都在执行该逻辑.
你可以为其中一个属性发布getter和setter吗?也许我们可以帮助调试它.