久しぶりの更新です。
加藤(ぱぱ)です。
これから、新2年生に向けての就職活動用のプログラミングTipsを定期的に更新したいと思います。
さて、これから企業の人見ていただく機会が出てくるわけですが、ソースも当然見られることがあります。
例えば、
どんなにゲームの出来が良くてもソースでアウトっ!!
となる場合や。
ゲームはいまいちだけどソースがきれい!!
というパターンが発生します。(私は多分後者、両方できていると最強!!)
ではソースがきれいとは?
コメントが書いてある?インデントがそろっている?
それだけではないプログラミングTipsを紹介していこうと思います。
ちなみにこの内容はEffectiveC++の内容を元にやっていこうと思います。[0回]
さて、みなさん。
自分のソースを見直してみると
#define ENEMY_MAX 10
みたいなのが沢山あると思います。
これはいったい何ですか?
そう、マクロです。
マクロとはコンパイル時にソースの置換をしてくれる便利なものですよね(^-^)
でも、企業の人からするとこれは良くない使用の方法のようです。
それはなぜか?
ずばり、エラーの発見がしにくいからです。(ほんとはそれだけじゃないけどね)
このENEMY_MAXは一見文字列のようですが、実はただの定数。
コンパイラにしてみれば、マジックナンバーなのです。
その証拠にVisualStudioでF9をつかって
struct Enemy enemy[ ENEMY_MAX ]
のような行にブレークポイントを設定して実行してみましょう。
止まりますよね?
そこでENEMY_MAXにカーソルを合わせてみましょう。
何も出ませんね?
それはマクロが定数だからです。
では、どうすればいいのか?
マクロではなくconst定数を使いましょう。
どのように使うかというと、
const int Enemy_Max = 10 ;
これだけです。
こうして先ほどと同じように
struct Enemy enemy[Enemy_Max ]
として見ると、おおっ、今度は変数の中身が表示されてますね。
普段自分しか見ないソースだとマクロでいいじゃないかと思うかもしれませんが、これが人が書いたソースだとどうですか?
マジックナンバーだらけだと読む気がしませんよね?
さらに、
const int Enemy_Max = 10 ; // 敵の総数
みたいにコメントも入っているとなお良いと思いますよ
以上パパのプログラミングTipsを講座でしたo(^-^)o
PR
COMMENT
無題
コンパイルの時点で、定数として展開されるので、
遅くない!
テーブルとか作るのによく使われますが。。。
const だけでも、展開されるならごめんなさい。
わても詳しくないのじゃー。
どなたか調べてコメントいただけるとうれしいです!
無題
コンパイルの時点で、定数として展開されるので、
遅くない!
テーブルとか作るのによく使われますが。。。
const だけでも、展開されるならごめんなさい。
わても詳しくないのじゃー。
どなたか調べてコメントいただけるとうれしいです!
無題
コンパイル時ではなく、実行時だった気もしてきた。
ちょっと調べてみたほうがいいかも。