ブログトップ

智信の部屋

tomonobu.exblog.jp

プログラムに関する雑談なんかを書いていこうと思います。(android記事のまとめサイトはこちらです→http://tomonobu.rocketserver.jp/android_blog_index.php)

カテゴリ:プログラミング( 3 )

以前の日記に書いた
変数の定義について
について続きのようなものを書いてみます。

まずはこのphpのコードを…

サンプルコード


:

for($i = 0;$i < 10;$i ++) {
if ($list_1[$i]["flag"] == true) {
$value = $list_1[$i]["value"];
break;
}
}

if (!is_null($value)) {
$val_1 = $value;
}
else {
$val_1 = -1;
}

:

for($i = 0;$i < 10;$i ++) {
if ($list_2[$i]["flag"] == true) {
$value = $list_2[$i]["value"];
break;
}
}

if (!is_null($value)) {
$val_2 = $value;
}
else {
$val_2 = -1;
}

:



実はこのコード、問題を含んでいます。
それは $value の扱いですね。
最初のfor文内では$valueは未定義であるため、
その後の判定分までは問題ありません。
っが、問題は次のfor文以降にあります。
このfor文に入る時点で$valueがすでに存在しているかどうか?
はわかりません。
もしかしたら定義済みの可能性もあり、
もしかしたら未定義の可能性もあります。
結果、このfor文の後のif文での判定条件をこの条件にするのは正しくありませんね。
$valueではなく別の変数に変えるか、
もしくは$valueを初期化するか、
などの対応が必要になりますね。
[PR]
by Tomonobu1979 | 2011-07-13 00:00 | プログラミング
JAVAのプログラムにおいて、
Eclipseによって変数定義に自動的に"final"が修飾されることがありました。
っで、このfinal修飾子が気になったので調べてみたのですが、端的に書くと…

 finalをつけて宣言されたものは変更することが出来なる

とのこと。
つまりはC言語の"const修飾子"と同じ働きをする修飾子なんですね。
うん、納得です。

参考資料
 「final修飾子
[PR]
by Tomonobu1979 | 2011-07-12 21:10 | プログラミング
スクリプト言語などを扱っていると、
変数の定義をしないまま適当に変数を使用できてしまいますよね。
別にこのことは悪いとは思っていませんが、
しかし、あまりに変数を簡単に使えてしまうことで、
 変数の定義
に関する意識が低くなっているように感じます。
そもそも変数は…
 値の変更が必要となる定義について
 値の意味を決めて使用する

という感じのものであると思いますが、
あまりにも簡単に変数が定義できてしまうために
 値の明確な定義をしないまま変数を作成してします
っという行為に陥ってしまう可能性があります。
この場合、関数のライン数が100程度であれば二重定義を避けるをできますが、
1000とか2000ラインの関数になってしまうと、
同一の名称で複数の意味を持つ変数定義に陥ってしまう可能性もありますよね。
っというわけで変数はその変数の
・意味
・ライフタイム
を意識して定義する必要がありますよね。
[PR]
by Tomonobu1979 | 2011-07-09 02:05 | プログラミング