コード設計とデバッグについて
5 min readAug 31, 2017
・Exercise36:コード設計とデバッグ
ここまでで、if文やループについて学習してきました。
今回は、プログラムの何が問題なのか理解するためのデバッグについて話していこうと思います。
このエクササイズの最後では、前回のエクササイズでやったような簡単なゲームをデザインしてみましょう。
if文のルールについて
- 全てのif文には、必ずelseを用いること。
- このelseが実行されない場合、それは何の意味も持たないので、その中にdieという関数を用いる必要があります。前回のエクササイズでやったように、それによってエラーメッセージを出力して処理を終わらせます。
- if文を2回より多くネストするのは避け、なるべく1回で済ませられるようにしましょう。
- それぞれの“if-elsif-else”はセンテンスのまとまりのようであるように、if文はパラグラフのように扱ってください。前後には空行を入れましょう。
- ブール論理テストはシンプルであること。
これらのルールを守れば、他のプログラマーよりもいいコードを書けるようになるでしょう。
前のエクササイズに戻って、これらのルールに従っているかどうか確認してみてください。
ループのルールについて
- “”while-loop”は、永遠にループさせる場合に使う。すなわち、ずっと終わらないということです。これはRubyにのみ適用されるもので、他の言語では違います。
- “foo-loop”は、他の全ての場合のループに使えます。特に、回数が決まっている場合のループにはそうです。
デバッグのヒント
- デバッガーは使わないでください。デバッガーは、病人の全身をくまなく検査するようなものです。特定部分の情報ではなく、いちいち全体の情報が出てきても困惑するだけでしょう。
- デバッグにおける最良の方法は、プログラムにおいて変数の値を出力するためのputを用いることで、それによりどこが間違っているのか確認することができます。
- 実行前に、巨大なソースコードを書かないようにしてください。少しずつ書いて、実行して、修正していきましょう。
ホームワーク
ホームワークとして、前回のエクササイズのようなゲームを作ってみましょう。
配列や関数、モジュールなど、学習したものをできる限りたくさん使ってみましょう。
コードを書き始める前に、ゲームのフローマップを作成してください。
部屋やモンスター、更にトラップなどプレイヤーがくぐり抜けるべきものを書き出してみましょう。
それができたらコードの作成に取り掛かるのですが、もし何かフローマップに問題があった場合はそれを修正してコードと合うようにしてください。
ひとまとまりのソフトウェアに関する仕事に取り組む最良の方法は、以下のような方法です。
- 紙かインデックスカードに、そのソフトウェアに関する仕事を終わらせるのに必要なタスクを書く。それが、Todoリストになります。
- その中から、最も簡単なものを選ぶ。
- ソースファイルに、どのようにタスクを終わらせるか示すためのガイドとして英語のコメントを書く。
- 英語のコメントの下にコードを書く。
- そのコードが、きちんと動くかどうか実行してみる。
- コードを書いて実行して修正する、というこのサイクルを繰り返す。
- 終わったらそのタスクをリストから消去し、次に簡単なものを選んで上記の作業を繰り返す。
このプロセスは、ソフトウェア業界で働くに当たって、論理的で理にかなったやり方です。
作成したゲームについて
前回のエクササイズと同じような、脱出ゲームを作成してみました。
ソースコードと、実際にいくつか動かしたパターンを示しておきます。