【问题标题】:Does programming to an interface help get rid of globals?对接口进行编程是否有助于摆脱全局变量?
【发布时间】:2016-09-26 08:13:16
【问题描述】:

或者我的界面是新的“全局”?我正在尝试找到一种方法来摆脱以下陈述:

function someFunction()
{
    global $var1, $var3, $var4;
    //these are eventually assigned instantiated classes from an include
    ....
}

到目前为止,我只提出了接口。我在想我的代码只会稍微宽松一点,也许很多。但是如果我真的想在实现一个接口(或扩展一个类)之后松耦合,我不能总是在接口和继承类之间用另一个抽象类或接口创建另一个抽象层次吗?

除了重写整个项目之外,我如何开始摆脱全局变量?

【问题讨论】:

  • 使用哪种语言?
  • 这道题的语言是php。
  • 我看不出全局变量和接口之间的关系...全局变量是一种糟糕的数据共享方式,还有其他(更安全)的方式来共享数据 - 哪种方式适合您取决于在您的用例中。
  • 对@alfasin 加一。阅读诸如依赖注入和组合之类的内容。

标签: php inheritance design-patterns interface global-variables


【解决方案1】:

摆脱全局变量非常简单,不需要引入接口(甚至类)。如果你有这样的代码:

function someFunction()
{
    global $var1, $var3, $var4;
    // ...

那么你只需要把它替换为:

function someFunction($var1, $var3, $var4)
{
    // ...

完成了。没有全局变量;)

编辑 您将不得不重写整个项目。用例如替换全局变量。静态变量不会真正提高代码的质量。它是一个全球性的,只是形式不同。

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2022-01-21
    • 2019-05-12
    • 2012-05-24
    • 1970-01-01
    相关资源
    最近更新 更多