• ベストアンサー

定数等のオンコーディングについて

いつもお世話になっております。 コーディングする時の注意点についてお聞きしたい事があります。 よく、「数字や文字列をそのままPGにオンコーディングせずに、 定数として定義してから使うように」と言われます。 なぜそうなのでしょうか? 以下の2つの観点から教えて頂けませんでしょうか? (1)数字や文字列など、定数にして使うことの利点 (2)何を定数にして、何を定数にせずそのまま使うのがよいのか 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#245936
noname#245936
回答No.2

私もその点いろいろ考えたことはありますが。 つまるところこうだと思います。 [前提] 商売用途の簡潔なソースを書くことを目的とする。 難解なソースを書くと、解読に余計に一時間かかりまして、 保守に一時間あたり1000円以上/hrs・人の人件費を損なうとする。 (1)定数の利点は「マジックナンバー」を防ぐことです。  マジックナンバーとは、その数値自身が意味を持たないことです。  もし、Ifの分岐として  「もし、患者が男なら処理Aを、女性なら処理Bを」という分岐が  あったとします。  ここの書き方は幾つかありますが、最低なのは。  if (X == 0){   処理B  }  Else{   処理A  }  この構文は最低です。  何故なら、もし上記のようにコメント行を書かないと変数Xが何か、  0の意味は?1の意味は?何が何だかわからなくなります。  こういう…  // X は人をし、0=女性、1=男性を指す  コメント行がないと意味が判りません。  大きいプログラムになると何千行も読まないと意味が判りません。  ただ、ここを定数とすると。  if (patient == female){   処理B  }  Else{   処理A  }  コメントが無くても、何となくすぐに判ります。   気づきませんか?  そうです。構文がそのまま人間語に近いと判りやすいんですね。  ですので、  i = 0 とか、strOK == 6 とかよく判らないことを書くよりも。  inifile.exist == false とか、human.sex == MEN とか。  わかりやすく書くと、製作費が「安価」になりますので儲かります。  オブジェクト指向等の考えはつまるところ、人間語に近い  プログラムを書く手法を指します。  個人的には汚いコード10万行以上書いた場合、コードの大まかな  流れを理解するのはほぼ不可能になる思います。  逆にきれいに書くと、何とかなると思います。 (2)定数にする部分は、主に大まかな仕様の部分。  人間語にしやすい、全体の仕様の流れを指し示すおおまかな  ところは全部でしょう。  クラス名をキッチリつけ、変数名をキッチリつけ。  仕様が「もし、彼がリンゴをみつけたら」ということであれば  int APPLE = 1;  if (he.find(APPLE) == true)  というように近い形のコードを書けるように、クラス名や  変数、メソッド、定数を書くべきだと思います。 判りやすいと儲かります(笑)

kamakuragengorou
質問者

お礼

ご返信ありがとうございます。 「人間語に近いと判りやすい」ということなのですね。 確かにコーディングは、動くように書けばどのように書いても 動きますよね。それをわかりやすくするために不明なものをなくす ようにしなければならないのですよね。 ありがとうございました。すっきりしました。

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>どんな意味なのでしょうか? マジックナンバーのことじゃない? 単純に for ループで for ( i = 0 ; i < 10 ; i++ ) { ... } と書いてあると、「10」が何を意味しているのかわからなくなる。 これを const int stack_size = 10; などと定義して for ( i = 0 ; i < stack_size ; i++ ) { ... } と書けと。 基本的には 0 などのそれ自体で意味が明確なもの以外、マジックナンバーは使わない。 プログラム規模が大きくなって、メンテナンスする際に余裕で死にます。

kamakuragengorou
質問者

お礼

ご返信ありがとうございます。 規模が大きくなればなるほど、そのように書いていたら大変に なるのですよね。やはり保守や拡張なども考えてやらねばなりませんね。 ありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

オンコーディングという言葉は初めて聞いたのですが どんな意味なのでしょうか? define: oncoding - Google 検索 http://www.google.com/search?sourceid=mozclient&ie=utf-8&oe=utf-8&q=define%3A+oncoding

関連するQ&A

専門家に質問してみよう