アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。
C言語は最初に変数の宣言がまとまってあって、
代入はその後の方になっています。
Javascript は宣言と同時に代入の方もあって
どちらもあります。
どちらの方が良いという何かケースはありますでしょうか?

A 回答 (4件)

C は ANSI C(C89) だと宣言はブロックの先頭にしか書けません。


初期化はそれを使う処理の近くで行った方がコードが
分かりやすいので、そういうコーディングになるのは
しょうがないですね。

現在でも ANSI C(C89) は広く使われているので
そういう例がたくさん見つかるのも無理はありませんが
C99以降ではそういう制限はなくなってます。

変数の初期化を宣言と同時に行うのはとても良い習慣で
極力そうすべきです。

未初期化変数はバグの温床です!
未初期化変数の参照の「可能性」を検出して
コンパイルエラーにする言語もあります(Java等)

ブロックスコープがある言語では、変数が見えてほしい
スコープより内側のブロックに初期化タイミングが
来ることがあるので、無理な時は無理になります。

Javascript は従来ブロックスコープが有りませんでしたが
let などブロックスコープの宣言が導入されたので
変数の初期化を宣言と同時に行えないケースが多少
増えると思います。
    • good
    • 0

C言語も同じですよ。


たまたま見たプログラムはそうなってただけです。

変数宣言が纏めて一箇所に有って、コメントが付いていると見た目が綺麗でわかり易いから、そう言うコーディングを規約にしてる会社も有ります。

が、処理の中間以降では、「あれ、この変数何だっけ?」となって、逆に解らなくなる事も多いです。

なので、do loopとか、処理の纏まり毎に使う変数を、そこで宣言した方が、実務的にはわかり易くなります。
    • good
    • 0

☓C言語は最初に変数の宣言がまとまってあって、



仕様上、変数の宣言は、変数を使用する前だったら(あるいは宣言と同時に代入を)どこでやっても構いません。
「最初に」ってルールはないです。
    • good
    • 0

> C言語は最初に変数の宣言がまとまってあって、


> 代入はその後の方になっています。

宣言したところで初期値を代入することも出来ます。

int count = 2;

といった具合に。


> Javascript は宣言と同時に代入の方もあって
> どちらもあります。
> どちらの方が良いという何かケースはありますでしょうか?

例えば二重ループの内側のループで使用する変数の初期化は変数宣言の所で行うのではなく内側のループに入る所で行うのが明示的で誤りを生むリスクが少なく、作者以外の人が読んだ際にも理解しやすいでしょう。
そういう視点を持ってコーディングをされるとよいと思います。

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!