1

如果我对类中的属性使用单个前导下划线,那么我从不同的对象访问它是错误的吗?是一个下划线说“我会随意使用它,但你用户不应该触摸它”或者甚至开发人员是否应该将它视为私有的?

4

2 回答 2

6

单下划线表示不供公众使用;欢迎在同一个包中的代码戳它。

于 2012-06-01T08:45:28.630 回答
1

我认为您应该尽可能合理地避免这样做,因为它破坏了封装,这是面向对象范式的好处之一。虽然有些人认为作为某些更高级别的范围界定很好,比如模块或包,但我发现即使在单个类的各种方法中,避免这样做也是一个有用的经验法则——至少如果它相当复杂、微妙的话,或者只是我想我以后可能想改变的一个方面。

原因是每次你用一个对象做某事时,你都会在一个对象的内部和你编码的地方创建依赖关系,无论是同一个对象或模块的另一部分还是其他什么。这种情况越多,以后维护或增强事物就越困难。

要考虑的另一个方面是,每当您觉得有必要这样做时,它可能表明需要更好的设计——在这种情况下,您可以将其视为警告信号并做出相应的反应。

为处理内部细节的操作创建接口通常意味着必须设计和实现比不这样做更多的代码。因此,在每种情况下,都必须权衡收益与成本,以确定是否值得。最终的经验(和教育,如果它正在进行的话)使这样的决定更容易,甚至可能是本能的。

于 2012-06-01T11:24:58.817 回答