- ベストアンサー
Javaの変数宣言と使用のルールについて
- Javaのソースコードでは変数宣言を使用直前に行い、同時に初期化代入するのがルールです。
- COBOLやC言語では処理の最初に変数宣言をまとめて記述するのに対し、Javaでは使用直前に宣言して使用することが基本です。
- 個人的にはC言語のように処理の最初にまとめて記述したいと思うかもしれませんが、Javaでは可読性を考慮して使用直前に宣言することが推奨されています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Javaでは、変数宣言はブロックの最初にまとめて記述していても、処理の直前に記述していても同じように動作しますが、後者のように処理の直前に記述するスタイルが主流です。 他の人がコードを読む時の可読性を考えると、主流のスタイルに従う方がよいと思います。 英語ネイティブの英米人が日本訛りの英語に違和感を感じるのと同様、JavaのネイティブプログラマーはC訛りのJavaコードに違和感を感じますし、特にチームで開発する場合を考えるとその言語の主流に慣れている方がメリットが大きいと思います。 ちなみにCの初期バージョンで変数宣言をメソッドの先頭で記述するように規定されていたのは、RAMが少ない環境でも実行できるようにコンパイラがある程度の最適化を可能にするためだったそうです。 他にもCとJavaでコーディングスタイルにいくつかの違いがあります。 下記にいくつか事例が紹介されています。 http://www.ibm.com/developerworks/jp/java/library/j-noaccent.html
その他の回答 (3)
- pringlez
- ベストアンサー率36% (598/1630)
>Javaでは使用直前に宣言して使用するのがルールであり、 >宣言をブロック内の最初にまとめて行っておくのは御法度でしょうか? 「ルール」「御法度」の言葉の意味にもよりますが。単に「変数宣言を先頭に書いて動くかどうか」でいえば動きます。が、仕事等でそんな書き方をすれば、「こいつ使えないやつだな」と思われます。
お礼
ご回答ありがとうございます。申し上げておりませんでしたが、動作するかは、実機で実習した結果で既に判明しております。動作するかというのは重要ではなく、その記述自体が、Javaにおいて是非かどうかを伺いました。「こいつ使えない」というのは、複数人数で開発する場合に『取り決めたルールに従わずに、勝手に思い込んでプログラミングを行ってしまった事が原因である』という解釈を致しました(もし間違っていたら申し訳ありません)。ご意見ありがとうございます。
- Lchan0211b
- ベストアンサー率61% (573/930)
C言語の変数宣言は、昔はブロックの最初にまとめて記述することしかできませんでしたが、1999年版のC言語規格(C99)からは変数はブロック内のどこでも宣言できるようになりました。 (参考) http://ja.wikipedia.org/wiki/C99 今でもC言語ソースの多くが関数の先頭で変数宣言されているのは、C99より前のC言語仕様でコーディングしたものをそのまま引き継いだり流用したりしているためです。 C言語でもJavaでも、本来は使用を開始する直前に宣言した方がわかりやすいと思います。その宣言があることで、これから新しく使い始める変数であることが明確になるからです。それが明確でなければ、その変数が既に別の用途で使われているものでないか、現在の値はどうなっているか等、いろいろ影響を注意しながら読み書きする必要があります。新しく宣言した変数はそういう他への影響がないことが保証されるので、安全に使うことができます。 JavaやC言語がブロック内のどこでも変数を宣言できるのは、そういう安全性を確保するための言語仕様の改善の結果です。
お礼
ご回答ありがとうございます。最初に記述する理由は、仰せられる通りです。私が無知であるために書けませんでしたが、代弁して頂きありがとうございます。皆様の回答により、どちらでも可能であるが、複数人数で開発する場合は、意向(取り決め)に従うのが最善という結論に辿り着きました。
- maiko0318
- ベストアンサー率21% (1483/6969)
COBOLはデータ部で宣言しなければなりません。 CもJavaも同じなのですが、 変数は宣言したブロック内でしか使えません。 Javaの例 for(int a=0;a<10;a++){ : : } なのでその変数をあちこちで違う目的で宣言できますし、 値がおかしい時COBOLのように、探し回る必要がありません。 もちろん、一括してプログラムの最初に宣言しても問題はありません。
お礼
ご回答ありがとうございます。仰せられる通りで、C言語も使用前であれば、ブロック内のどこでも宣言できてブロック内でしか使えないですね。Javaも同じように記述しても問題が無いということで少し安心しました。
お礼
ご回答ありがとうございます。 今回の疑問が発生したのは、私の学習を一通り終わらせていない事が原因でした。 そういうスタイル(記述の仕方)にしないとデメリットの方が多くなる (非効率になる、オブジェクト指向・応用に関わってくる)ということに繋がるのですね。 C言語のことは置いといて、ベースとなる知識だけ生かしながら、 1からJavaを正しく学んでいくことにしたいと思います。皆様本当にありがとうございました。