![]() |
1
6
简单规则:
当您将字段公开(甚至受保护)时,实际上是将其声明为接口的一部分。问题是,它是一个实现细节——在几乎所有情况下,该字段对代码都有意义。任何想设置它的人都可以,但你必须仔细解释如何设置它,以防止整个东西崩溃和燃烧。您甚至不能在设置时验证它,所以您需要在使用它之前每隔…一次…验证它,这可能会破坏性能,具体取决于验证需要如何进行。(即使那样,也不能保证球场 停留 有效,因为你甚至不能强制同步访问它。)而且每个使用你的类的人都必须做同样的事情,因为$deity只知道其他代码在这个字段上乱搞了什么,可能会破坏它。 最重要的是,一旦它是一个字段,人们就会编写期望使用该字段的代码。在以后您发现需要进行任何验证的情况下,您不能将字段转换为getter/setter而不破坏二进制兼容性(也就是说,任何使用您的代码的人都必须重新编译使用该字段的所有内容才能使其再次工作)。这样做太多次,人们会害怕使用您的API——请阅读:您将没有任何用户。 getter和setter将实现与接口分离。它们允许呼叫者返回一些绝对有效的内容,并让您确保输入的内容绝对有效。这使得事情更容易预测,更稳定。所以,如果你写了代码,在你写了它之后会用到它, 非平凡 getter和setter(用于验证值,或者同步等)是一个好主意——即:不仅仅是盲目地获取和设置一个变量。 |
![]() |
2
2
当其他人将要使用您的代码或类时,这是为了解决这个问题。您可以准确地公开和控制要连接的内容以及“内部”内容。 如果你是唯一一个会使用你的代码的人,那么是的,这常常是“太过分了”。 我甚至会因为建议而受到攻击,但不管怎样… |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 3 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 3 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 3 年前 |