« この数に、ピンと来たら…… | トップページ | ウェブ関連クイズ出力 »

2006.05.19

変数のスコープ

グローバル変数の取り扱いの恐さ、というのは経験してみないとわからないものかもしれない。
昨日納品されたプログラムをチェックしていると、どうやっても動作しないものがあった。
仕方がないのでデバッグプリントをあちこちにいれて、ある変数の動作を検証していた。
それは状態を示すグローバル変数で、正常動作であればすべて”0”、以上動作であれば-1か1~5を返すはずの変数であった。
ところが、ある関数を経由した瞬間に8991672のような明らかな異常値を検出し、????となってしまった。

結論からいえば、該当関数内で、同一変数名で再度ローカル変数として変数が宣言されなおしていたうえに、変数の値が初期化されていなかった。
このため環境によってはどんな値が放り込まれても文句がいえない状態であることが判明した。
聞いてみると該当関数部分は新人のプログラマが作ったらしいが、先輩のソースを見よう見まねで書いている過程で、グローバル変数というか変数のスコープを理解せずに変数にはDeclareが必要という中途半端な意識で作ってしまったようだ。
デバッグプリントを埋めているときにすぐに気づかなかったわしもわしだが(^^;;;;
よもやそんな根本的なミスをしていたとは……

|

« この数に、ピンと来たら…… | トップページ | ウェブ関連クイズ出力 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/10137229

この記事へのトラックバック一覧です: 変数のスコープ:

« この数に、ピンと来たら…… | トップページ | ウェブ関連クイズ出力 »