虽然您的is\\u search()示例很简单,也很难证明其合理性,但在OOP样式中,通常建议对此类内容使用getter和setter,而不是公共属性,原因有很多。
封装。的行为is_search()
返回布尔值,但用于确定是否正在进行搜索的方法将来可能会更改。现在is_search
变量在过程的早期设置,然后此函数返回它。更高版本可能会立即检查当前URL是否为搜索URL,具体取决于模板系统的更改方式。例如,该属性虽然是公共的,但以后可能会更改。现在它存储为布尔值,但可能类似于“search_string
“”可以改为选中,然后返回一个布尔值is_search()
. 函数的输出隐藏了所使用变量的内部状态,因为外部不需要知道这些状态。
公共方法,如is_search()
是您的接口,因此接口可以随时间保持更恒定。最好使用不太可能改变的东西(is_search()
只会实际返回布尔值)。
许多其他库和开发系统都知道getter和setter,并且在它们存在时工作得更好。这是一种常见的款式选择,最适合模具。
继承自类的类可以更改基本功能的工作方式,这些函数允许它们使用这些功能重写行为。必须保持变量的公共性并在内部修改它们更加困难,也更容易出错。
函数,甚至对象方法,都可以作为对过滤器函数等的回调传递。变量不能。
因此,您的问题的真正答案是is\\U搜索变量可能不应该是公共的。现有的方法相对正常。
编码时,要进行防御性编码。即使您可以访问is_search
变量直接使用is_search()
功能。如果变量在将来发生任何变化,函数将进行更改以适应它,并仍然为您提供正确的输出。