cwa*_*ole 22 oop variables private
我最近一直在使用其他人的代码,我意识到这个人对私有变量和方法参数的理念与我的不同.我一般认为私有变量只应在以下情况下使用:
(我承认,上面的许多都是轻微的重复,但它们看起来各不相同,值得这样的处理......)
这似乎是防止意外更改变量的最有效方法.似乎遵循这些标准将允许最终操纵外部引用(如果类最终被修改),从而在将来为您留下更多选项.这只是一个风格问题(如一个真正的括号或匈牙利命名惯例),还是我有这种信念的理由?在这种情况下,实际上是否有最佳做法?
编辑
我认为这需要纠正.我使用上面"全局"的实际意思,"全局实例方法"并非"任何地方都可以全球访问".
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我做的方式:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我声称它不是样式问题,而是可读性/可维护性问题.一个变量应该有一个使用,一个只使用."回收"变量仅仅因为碰巧需要相同类型而出于不同目的没有任何意义.
从您的描述中可以看出,您所处理的其他人的代码就是这样,因为所有其他用途基本上都在您的列表中.简而言之,它根据情况使用私有成员变量作为临时变量.我是正确的假设吗?如果是这样,代码是可怕的.
任何给定变量的词法范围和寿命越小,错误使用的可能性越小,资源处理越好.
拥有一个成员变量意味着它将保持需要在方法调用之间保持的状态.如果值不需要在调用之间存在,则它没有理由存在于单个调用的范围之外,因此(如果存在的话)应该是方法本身内的变量.
风格永远是一个艰难的风格,一旦你开发出一个你可能会陷入困境,很难看出为什么你做的可能不是最好的方式.