PHPを使っています。変数を初期化すべきかを教えてください。


PHPの変数の初期化はどのタイミングについて教えてください。

PHPの変数の初期化は下記を参照すると  
[PHP.net - 基本的な事](http://php.net/manual/ja/language.variables.basics.php)  
初期化されていない変数の値は状況に応じたその型のデフォルト値が入るようです。  
boolean：FALSE  
integer、float：ゼロ  
文字列：空の文字列  
配列：空の配列

このページには  
「PHP では変数を初期化する必要はありません。」  
とありましたが  
「初期化することはとてもいいことです」とも記述されていました。

そこでお伺いしたいのですが一般的に初期化は明示的に行う必要はありますでしょうか？  
また、初期化する場合PHPの初期化はどのタイミングで行うのでしょうか？  
どういう風に気を付けてコーディングしているかだけでも構いませんので教えてください。  
よろしくお願いします。




> 初期化されていない変数の値は状況に応じたその型のデフォルト値が入るようです。  
>  boolean：FALSE  
>  integer、float：ゼロ  
>  文字列：空の文字列  
>  配列：空の配列

が初期化で良いのでは？

宣言時に、格納される値が設定できるのであれば、そのタイミングで設定すれば良し。  
そうでなければ、変数を使う前に、デフォルト値のままか？って判定すれば良いだけのように思いますが。

確かに、初期化は大事ですが、それ以上に大事なのは、

  1. 意図した有効値が入っているか判断できること
  2. 変数の値をコントロールして設定・取得できること

だと思います。

1はそのままですが、integerとかの『0』は普通の値なので、『0』が入る事があり得る変数でそのままにしておくと、使いたいタイミングで初期値の『0』なのか、意図して設定した『0』なのか分かりませんよね？  
そういう場合を考慮して、無効な値を自分で考えて初期化してやる必要があります。  
※その変数が取り得ない値を無効値と自分で決めてやります。身長や年齢とかなら負値とかですね。

2は変数が生まれて消えるまでをコントロールできるように作っているか？ってことです。  
例えば、globalな変数を様々な関数の中で設定したり、使用したりして、どのタイミングで設定されているかとか、このタイミングでこの変数使って良いのかとかを判断できなくなるのが典型的な悪い作りですね。

ぱっと思いつくのはこんな感じかな？と思います。

* * *

多分、初期化を口うるさく言われるのは、Cのポインタの使い方が一番影響してるんではないかと思いますよ。




> 初期化されていない変数の値は状況に応じたその型のデフォルト値が入るようです。  
>  boolean：FALSE  
>  integer、float：ゼロ  
>  文字列：空の文字列  
>  配列：空の配列

が初期化で良いのでは？

宣言時に、格納される値が設定できるのであれば、そのタイミングで設定すれば良し。  
そうでなければ、変数を使う前に、デフォルト値のままか？って判定すれば良いだけのように思いますが。

確かに、初期化は大事ですが、それ以上に大事なのは、

  1. 意図した有効値が入っているか判断できること
  2. 変数の値をコントロールして設定・取得できること

だと思います。

1はそのままですが、integerとかの『0』は普通の値なので、『0』が入る事があり得る変数でそのままにしておくと、使いたいタイミングで初期値の『0』なのか、意図して設定した『0』なのか分かりませんよね？  
そういう場合を考慮して、無効な値を自分で考えて初期化してやる必要があります。  
※その変数が取り得ない値を無効値と自分で決めてやります。身長や年齢とかなら負値とかですね。

2は変数が生まれて消えるまでをコントロールできるように作っているか？ってことです。  
例えば、globalな変数を様々な関数の中で設定したり、使用したりして、どのタイミングで設定されているかとか、このタイミングでこの変数使って良いのかとかを判断できなくなるのが典型的な悪い作りですね。

ぱっと思いつくのはこんな感じかな？と思います。

* * *

多分、初期化を口うるさく言われるのは、Cのポインタの使い方が一番影響してるんではないかと思いますよ。

