- ベストアンサー
変数宣言は、最初に全部列挙したほうがいいですか?
100行ぐらいのスクリプトだと、10個ぐらい変数宣言しなければいけませんが、 最初にまとめて書くメリットを教えてください。 ※他人のコードを読んでいて、最初にすべての変数宣言があったら、最初に戻らないとわからなくなり、その時、その時に、変数宣言があったほうがいいかなと。 ※言語によって違ってきますが、例えばJAVASCRIPTだとグローバル関数とローカルの問題があります。そのようなことを踏まえて、ご経験、ご意見を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これは言語によって答えは全然違ってきます。 たとえばPL/Iだと一番最初にdeclareで全部宣言しておかないとコンパイラが受け付けません。COBOLもFortranも同じです。 これは、変数の置く場所が決まっているからです。PC式にいえばヒープ領域に宣言しないと論理が合わなくなるからです。 それに対し、メモリ獲得のスコープが仮想的な言語があります。C++とかPHPの類ですけど、たとえばPHPで for (int i=1;i<19;i++)のように書くと、iはforのブロックの中だけで存在し、外からは見えません。また、このforの外でiという変数を使った場合は、forブロックの中のiと外のiは全然別のものであり、データも連携しなければ全く別のものです。こういう書き方だと論理構造がブロック化し、他に迷惑をかけないという強力な効果がありますが、第三者がソースを見たときに明確に把握できるかどうかには危険が伴います。 pythonなどになると、ここはもっと抽象化し、外部に設定したサブルーチン的なプログラムでなくても、小さい処理はプログラム中に書きこみその中で収束させて扱うことができるようになっています。 オブジェクト指向とかクラス化というような思想はここまで来ているのです。 ここまでくると、変数を最初に書くか途中で書くか、というのは意味のない議論と言うことになります。スコープで存在が縛られるのですから。 そういう意味で、一概にどうだというのは開発系によって変わります。 とはいえ、たとえば全行に同じスコープが設定してあってべたで読むようなjavascript程度のソースならば、たかだか100ステップぐらいだったら変数は全部まとめたほうがいいに決まっています。テキストエディタスクロールで4ページぐらいでしょう。一望のもとに見えるんですから。 しかし、変数を使うときにどんな言語でも注意してほしいのは、意味のある名前を付けろということです。iだのjだのwだのは極力使わないほうがいい。 こういう無個性の変数は、その気がなくても使いまわしてしまう可能性があるからです。ある部分だけで使うと思ってwという変数をそこだけで使っていたつもりが、別のところで重要なパラメータだったりすると、全然意識していないのにシステム破壊コーディングをしてしまっているということになります。 全体で使うほうはWorkareaKeepParameterなどと言う名にし、ローカルなほうはwcounterなんてしないと、それがすぐにわからなくなります。 また、先ほどのPHPやpythonの例でいった、ローカルスコープ変数であっても、 iではなく、filecounter、外で使うのはcountparameterなどとしておけばだれが見ても別の役割だということが、スコープを意識しなくても分かることになります。
その他の回答 (1)
- chachaboxx
- ベストアンサー率23% (412/1777)
エイリアスのコーディング方法もありますが、それ以前に文法というものがあります。 自分しか理解できなくてもいいという記述規則だと得てして後でわからなくなったりします。 ましてや他人が理解するとなるとより困難に。 確かに、ローカル変数のように『近場』に記述すると見た目の参照性はいいのですが、変数の数や命名規則が複雑(変数役割の明瞭化)になってくると、逆に散在するグローバル変数の名前確認が面倒になったりします。 プログラムというのはだんだん長くなるのが普通ですから、特にそんな傾向があります。