在同一单元的类方法中使用属性而不是字段是一种不好的做法?

我已经为某个班级宣布了私人领域和公共财产。

从其他单位,我可以通过提供访问权的公共财产访问该字段。

但是在声明这个类的同一单元内,我可以选择直接或通过属性访问该字段。

建议的最佳实践是什么:直接读写现场或通过提供读写访问权限的属性?


与大卫的口味相反,我总是使用私人/受保护的领域,但仅限于同一类别(私人)或派生内部(受保护时)。 很勉强,原因也是我的可读性:

  • 到目前为止,FCount读作Count,
  • 使用私有字段清楚地表明我正在处理内部事务,
  • 而在我使用该属性的零星情况下,很显然我需要在它后面触发setter或getter。
  • 这里的关键点是一致的。 选择一个,并坚持下去。 没有对错也没有错。

    由于杰瑞的评论而更新:

    我关于保持一致的观点是为了每个人的利益提供一般性建议。 用一种默认的语法习惯自己,并且你的代码将在你的余生中晶莹剔透(对你而言)。

    当然,当您选择使用私人领域时,会出现偶然的情况,您必须改用该属性。 但是反过来也适用:如果您选择使用该属性,则会出现必须使用专用字段的情况。 我只是说当你坚持一个系统时,例外情况会更明显地看起来像例外情况。


    那么,这大概是个人品味的问题。

    我自己,我会永远选择财产,即使在声明财产的类的内部编码时也是如此。 例如,在我看来,伯爵而不是FCount的读法更好。

    另一个观点是,如果你已经向公众公开了一个物业,并且这对公众消费来说足够好,那么私人消费应该没问题。

    还有一点就是,如果你选择尽可能使用最公开的接口,那么当你使用私有的东西时,它会更加明显。 所以,如果你发现你需要写FCount因为没有Count,那么你有一个温和的提醒,这是一个你正在使用的私人名字。

    所以,正如我所说,没有明确的答案,只是我个人的意见和偏好。


    如果你不使用任何吸气和吸气器,这只是一个品味问题。 使用属性或字段将生成完全相同的代码。

    如果你确实使用getter和setter,那么如果你不想使用getter / setter代码(例如在constructor ),那么可以明确地使用private字段。

    如果你的getter和setter是virtual ,即使默认实现只是一个赋值,你也必须检查SOLID原则,并确保至少遵循Liskov替换和Open / Close原则。

    链接地址: http://www.djcxy.com/p/60249.html

    上一篇: Using properties instead of fields in class methods of the same unit is a bad practice?

    下一篇: Session variable no longer persistate