パッケージ変数
今日、新入社員のコードをレビューしたのだが、意味もなく、パッケージ変数を使用しているのを発見した。
無知なパッケージ変数の使用は悪です。 やめてください。なぜって?
そう、パッケージ変数はどこでも使えて超便利だから、バシバシ使う病にかかります。そして、そのデバッグや保守をしたことがあるのが、何を隠そう私です。パッケージ変数だけで、20個はあったね。そして、それがハッシュで、かなりの階層… そして、変更し放題…
バグがでて、調べると、5階層ぐらい上の関数内で、パッケージ変数を使用しており、値が空だからエラーでこけてるんだよ、おいおい調査に1時間かかったよ。勘弁して。というのが、一日数回あるようなシステムの保守でした。まぁ、それが入社して最初のシステムだったのは秘密。良い経験でしたよ。トラウマになりましたから。
さて、私はつかうなといっているわけではないので注意してください。
フレームワーク使用で、あなたがかぶせた部分でグローバルでも足したい物などがあるでしょ?
そういう時には便利だよねぇ。 ログの関数とか、DBのコネクションとか。
ただ、現在は私は直接つかうのではなく、関数にかましてますが。さらに、Exportしちゃってます。
use var qw/$log/;
sub log {
return $log;
}
こういう形で、とりあえず直接は、使用しないようにしています。