インターン経過のほーこく & 小ネタ

お久しぶりです。EFです。

 

現在、インターンでコンシューマー機のゲームを開発しています。

やはりPCと違ってスペックが低かったり、操作が異なるので今までとは一味違う苦しさを味わっています。

 

技術面では社内ライブラリ(多くの関数をまとめたもの)を使用しているので特に困ったことはないのですが(本当はあるが)、コーディングが意外と難しかったりします。

 

いつもは ”できるだけコードを短く書く" とか気にしたことがなかったので、1画面に収まらない関数がいっぱいありました。やはりコードが汚なかったり、無駄に長いとバグの発見やコードの修正、可読性(読みやすさ・理解しやすさ)を失ったりと大変です。

 

なので少しでも短く書くための方法をメモっておきます。

自分用なので低レベルな話です。当たり前じゃんと思った方はスルーしてください・・・。

bool GetIsDead()

{

  if(GetHp() <= 0)

  {

    return true;

  }

  else

  {

    return false;

  }

}

これはオブジェクトが死亡かどうかを取得する関数です。動作自体は問題ありませんが、見て通り長いです。C言語を少し知っている人であれば三項式使えば楽じゃん!ってなるかと思います。

bool GetIsDead()

{

  return GetHp() <= 0 ? true : false;

}

三項式とは

条件式 ? 条件式が真の時の処理 : 条件が偽の時の処理; 

という記述ができる便利なものです。

これで凄く短くなりましたね。

 

ですがもう一度考えてみてください。

GetHp() <= 0 (Hpが0以下であれば)

であればtrue、そうじゃないときはfalseを返したい処理ですね。

 

もう解った方もいらっしゃると思いますが、これはすごく無駄です。

何が無駄かというと三項式が無駄です。

 

条件式の結果をわざわざ true なのか false を設定して返しています。

どういうことかと言えば、こういうことです。

bool GetIsDead()

{

  return GetHp() <= 0;

}

そう、条件式の真偽が結果を返せばいいだけの話です。

条件式を評価すると結果はbool型になるのでこの書き方でも問題ありません。

プログラミングを始めたばかりの方は意外と気づかなかったりします。

(記事主は三項式で書いていたなんて言えない・・・)

 

そんなこんなで今回は以上です。

できるだけコードを短く書くため言語仕様を知ったりアルゴリズム(処理のパターン化)を覚えると簡潔かつ理解しいやすいコードが書けるので是非調べてみてください。

 (今日が山場だ・・・)