当前位置:  开发笔记 > 编程语言 > 正文

参数与成员变量

如何解决《参数与成员变量》经验,为你挑选了3个好方法。

我最近一直在使用其他人的代码,我意识到这个人对私有变量和方法参数的理念与我的不同.我一般认为私有变量只应在以下情况下使用:

    需要存储变量以便以后调用.

    存储在变量中的数据在类中全局使用.

    当需要对变量进行全局操作时(与每个类方法读取变量的需求明显不同).

    什么时候会使编程变得更容易.(不可否认,但在许多情况下必须避免将自己画成一个角落).

(我承认,上面的许多都是轻微的重复,但它们看起来各不相同,值得这样的处理......)

这似乎是防止意外更改变量的最有效方法.似乎遵循这些标准将允许最终操纵外部引用(如果类最终被修改),从而在将来为您留下更多选项.这只是一个风格问题(如一个真正的括号或匈牙利命名惯例),还是我有这种信念的理由?在这种情况下,实际上是否有最佳做法?

编辑
我认为这需要纠正.我使用上面"全局"的实际意思,"全局实例方法"并非"任何地方都可以全球访问".

edit2
一个例子被要求:

class foo
{
    private $_my_private_variable;

    public function __constructor__()
    {
     }

    public function useFoo( $variable )
    {
        // This is the line I am wondering about,
        // there does not seem to be a need for storing it.
        $this->_my_private_variable = $variable; 
        $this->_doSometing();
    }

    private function _doSomething()
    {

        /*
          do something with $this->_my_private_variable.
        */
        // This is the only place _my_private_variable is used.
        echo $this->_my_private_variable;
    }
}

这就是我做的方式:

class foo
{

    public function __constructor__()
    {
     }

    public function useFoo( $variable )
    {
        $this->_doSometing( $variable );
    }

    private function _doSomething( $passed_variable )
    {
        /*
          do something with the parameter.
        */
        echo $passed_variable;
    }
}

Michael Burr.. 32

通常,类成员应表示类对象的状态.

它们不是方法参数的临时位置(这是方法参数的用途).



1> Michael Burr..:

通常,类成员应表示类对象的状态.

它们不是方法参数的临时位置(这是方法参数的用途).



2> Konrad Rudol..:

我声称它不是样式问题,而是可读性/可维护性问题.一个变量应该有一个使用,一个只使用."回收"变量仅仅因为碰巧需要相同类型而出于不同目的没有任何意义.

从您的描述中可以看出,您所处理的其他人的代码就是这样,因为所有其他用途基本上都在您的列表中.简而言之,它根据情况使用私有成员变量作为临时变量.我是正确的假设吗?如果是这样,代码是可怕的.

任何给定变量的词法范围和寿命越小,错误使用的可能性越小,资源处理越好.



3> Alan Mullett..:

拥有一个成员变量意味着它将保持需要在方法调用之间保持的状态.如果值不需要在调用之间存在,则它没有理由存在于单个调用的范围之外,因此(如果存在的话)应该是方法本身内的变量.

风格永远是一个艰难的风格,一旦你开发出一个你可能会陷入困境,很难看出为什么你做的可能不是最好的方式.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有