在同一单元的类方法中使用属性而不是字段是一种不好的做法?
我已经为某个班级宣布了私人领域和公共财产。
从其他单位,我可以通过提供访问权的公共财产访问该字段。
但是在声明这个类的同一单元内,我可以选择直接或通过属性访问该字段。
建议的最佳实践是什么:直接读写现场或通过提供读写访问权限的属性?
与大卫的口味相反,我总是使用私人/受保护的领域,但仅限于同一类别(私人)或派生内部(受保护时)。 很勉强,原因也是我的可读性:
这里的关键点是一致的。 选择一个,并坚持下去。 没有对错也没有错。
由于杰瑞的评论而更新:
我关于保持一致的观点是为了每个人的利益提供一般性建议。 用一种默认的语法习惯自己,并且你的代码将在你的余生中晶莹剔透(对你而言)。
当然,当您选择使用私人领域时,会出现偶然的情况,您必须改用该属性。 但是反过来也适用:如果您选择使用该属性,则会出现必须使用专用字段的情况。 我只是说当你坚持一个系统时,例外情况会更明显地看起来像例外情况。
那么,这大概是个人品味的问题。
我自己,我会永远选择财产,即使在声明财产的类的内部编码时也是如此。 例如,在我看来,伯爵而不是FCount的读法更好。
另一个观点是,如果你已经向公众公开了一个物业,并且这对公众消费来说足够好,那么私人消费应该没问题。
还有一点就是,如果你选择尽可能使用最公开的接口,那么当你使用私有的东西时,它会更加明显。 所以,如果你发现你需要写FCount因为没有Count,那么你有一个温和的提醒,这是一个你正在使用的私人名字。
所以,正如我所说,没有明确的答案,只是我个人的意见和偏好。
如果你不使用任何吸气和吸气器,这只是一个品味问题。 使用属性或字段将生成完全相同的代码。
如果你确实使用getter和setter,那么如果你不想使用getter / setter代码(例如在constructor
),那么可以明确地使用private字段。
如果你的getter和setter是virtual
,即使默认实现只是一个赋值,你也必须检查SOLID原则,并确保至少遵循Liskov替换和Open / Close原则。
上一篇: Using properties instead of fields in class methods of the same unit is a bad practice?