私は最近、他の誰かのコードを扱っていて、この個人がプライベート変数とメソッド パラメーターに関して私とは非常に異なる哲学を持っていることに気付きました。一般的に、プライベート変数は次の場合にのみ使用する必要があると感じています。
- 変数は、後で呼び出すために保存する必要があります。
- 変数に格納されたデータは、クラス内でグローバルに使用されます。
- 変数をグローバルに操作する必要がある場合 (すべてのクラス メソッドで変数を読み取る必要がある場合とは明らかに異なります)。
- プログラミングが大幅に簡単になるとき。(確かに漠然としていますが、自分を窮地に追い込むことを避けるために、多くの状況に身を置く必要があります)。
(上記の多くは少し繰り返していることは認めますが、そのような扱いに値するほどそれぞれが異なっているように見えます...)
これは、誤って変数が変更されるのを防ぐ最も効率的な方法のようです。また、これらの標準に従うと、(クラスが最終的に変更された場合) 外部参照の最終的な操作が可能になるように思われるため、将来さらにオプションが残されます。これは単なるスタイルの問題 (1 つの真のブラケットやハンガリーの命名規則など) ですか、それともこの考えには正当な理由がありますか? この場合、実際にベストプラクティスはありますか?
編集
これは修正する必要があると思います。上記の「グローバル」を実際に使用したのは、「インスタンスメソッドによるグローバル」であり、「どこからでもグローバルにアクセス可能」ではありません。
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;
}
}