全知全能を目指す人のありがたい雑記

何かしら意味のあるありがた~い話か、意味のない雑念だらけの日記を書く予定です。

【パワー系PG】ハードコーディングはやめてDBMSを使いたい

あなたのプログラム、「ハードコーディング」してませんか?

ハードコーディングとは簡単に言うと以下のような感じ
内容としては業務データをプログラムで作っている処理。

int input;
scanf("%d", &employeeNo);

if(employeeNo< 1&& employeeNo> 100){
    //①の業務データ
}
else if(employeeNo< 101 && employeeNo> 200){
    //②の業務データ
}
else if(employeeNo< 201 && employeeNo> 300){
    //③の業務データ
}
else if(employeeNo< 301 && employeeNo> 400){
    //④の業務データ
}
else if(employeeNo< 401 && employeeNo> 500){
    //⑤の業務データ
}
else if(employeeNo< 501 && employeeNo> 600){
    //⑥の業務データ
}
else if(employeeNo< 601 && employeeNo> 700){
    //⑦の業務データ
}
else if(employeeNo< 701 && employeeNo> 800){
    //⑧の業務データ
}

あっ、パワー系PGが書いたコードか!!!

さて、上のコードで気になるのが何点か。

  • 1とか100とか101とか200って何ぞ??
  • コード量にパワーを感じる

コードを書いていない側からすると
色々気になってくるコードだね。

卒業する方法

  • 1とか100とか101とか200って何ぞ??
  • コード量にパワーを感じる

仰る通りです。
パワー感じますよね。
1とか100とか101とか、パッと見、数値の意味がわからんちんですな。

そもそも、
業務データを取り扱うときは
プログラムにガリガリ書くべきではない
です。
まあ、当たり前の話です。

業務データを取り扱うときは
プログラムに直接持たせるのではなく、
DBMS(データベース管理システム)を使いましょう。

言語とDBMSを連携するには相応のライブラリや
フレームワークを流用するのが筋
です。
DBMSも、色々種類があるので何か自分に合うものを探すと良いです。

例えば「C言語MySqlの連携」を例に挙げるなら、
以下の記事辺りを参考にしてください。
d.hatena.ne.jp

ぐぐればいくらでも出ます。

あと、データベースにアクセスするためには
SQLというのを覚えないといけません。

まあ単純な文なら一瞬で覚えられます。
cfm-art.sakura.ne.jp

書き方のイメージとして以下のような形式。

SELECT [営業所種別] FROM [従業員テーブル] WHERE [従業員番号]

SQL文はライブラリやフレームワークによって
プログラム内に記載できます。

例えば、WHEREの後には条件を記載するのですが、
条件に先ほど定義したemployeeNoを渡すこともできます。
※その場合はemployeeNoに対するレコードをDBからもらえます。

ですので、
データベースから引っこ抜いた営業所種別のレコードをそのまま流用すれば
プログラムとしては数行で済むわけです。

業務データはDBMSを使おう。