奥義本・写経2日目

長いこと空きました。しかも、全然2日目ではありませんがw


今日は、アジャイル(XP)開発でのデモンストレーションの章。お題は、ボーリングゲームのスコア計算プログラムについてです。実際に、本の内容をトレースしながら考えてみました。

ユニットテスト無しの変更は恐ろしい
自分で一から考えながら作成したプログラムではないので、最初から細かいところが分かるわけではありません。けれど、ユニットテストさえあれば、心理的にかなり楽にリファクタリングや仕様変更が行えます。これ、多分日常業務でも一緒のはずなんで、やっぱりユニットテストABAP Unit)を普及させていきたいなぁ。
ユニットテストだけで全てを解決できるわけではない
身をもって実感しました。というのは、リファクタリングの際に一行間違ってたのですが、テストが全部正常に通っちゃった!最終的に全体を通して見たときに、意図が通じない箇所を見つけて発覚。結論から言うと動作には問題なさそうだったのですが、やっぱり意図が通じないのは気持ち悪いもんでw


写経しながら思ったのですが、ボーリングのスコア計算ってプログラムの演習に結構いいかもしれないですね*1

  • ストライク・スペアの判定なども入っていて、適度な難易度である
  • 10フレームはちょっと特殊なので、境界条件にバグが含まれやすいというのも実感できる
  • 大体の人は、ボーリングのルール(仕様)を知っている

特にルールを知っているという点は、演習問題に求められるものとして結構重要。先輩が手取り足取り仕様を教えなくても、自分で考えてコードを組むことができるから。自分で考えること重要!詳細な設計書がないと作れないプログラマ(コーダ)なんて、正直いらないし・・・

あと、これくらいの規模だと全体を見渡せる量で人によって書き方も違うだろうから、添削し合えば人のコードも読めて勉強になるでしょう。さらに演習として追加するならば、GUI系の入出力とかかな。バッチ処理についても入れたいけど、ちょっとこの演習問題だと適例ではなさそう。

ま、公に教育をする立場にはしばらくはならないと思うけど、自分に後輩がついた場合の教育ネタとしてストックしておきますかね。

*1:他に考えているのは、FizzBuzzならぬナベアツ問題