概要

このカリキュラムでは問題のあるコードを改善していくことで、オブジェクト指向の考え方を体験していきます。

内容

こちらのコードを利用して学習をすすめていきます。これは自動販売機をシミュレートしたコードで投入した金額に応じて、商品(飲み物)やお釣りが出てきます。例えば、自動販売機に500円を投入しコーラを選択すると商品のコーラとお釣りの400円が返却されます(商品は一律100円)。

自動販売機であるVendingMachineと飲み物を表すDrinkのクラスがあり、それを実行するmain.rbとテストコードのtest.rbで実装されています。今回はこのプログラムに以下のオブジェクト指向エクササイズの規約を一つずつ適用しながら、その変化を確認していきます。合計7つのstepを通して学んでいきます。

規約

以下の規約に従うことで、オブジェクト指向による設計やプログラミングを実際のプログラムに適用します。

  1. 1つのメソッドにつきインデントは1段階までにすること
  2. else句を使用しないこと
  3. すべてのプリミティブ型と文字列型をラップすること
  4. 1行につきドットは1つまでにすること
  5. 名前を省略しないこと
  6. すべてのエンティティを小さくすること
  7. 1つのクラスにつきインスタンス変数は2つまでにすること
  8. ファーストクラスコレクションを使用すること
  9. Getter、Setter、プロパティを使用しないこと

step1 名前を省略しない

このstepでは、名前を省略しないことを適用してみます。

VendingMachineクラスのbuyメソッドの引数でiという引数名が定義されていますが、このままではこの引数の役割がわかりません。このiは自動販売機に投入した金額の引数のため、支払いを意味するpaymentという名前に変更しましょう。