前のパートに戻る 完了して次のパートへ  

  1-5 パラメータに任意の初期値を設定

こちらでは、より柔軟にパラメータの初期値を設定できるよう、initializeメソッドをさらに改善していきます。

ここまでの内容で、initializeメソッドを使うことによってコードはだいぶシンプルになったのですが、まだ不便なところがあります。それは、決まった値しかパラメータに設定できないところです。

現在は、initializeメソッドの中に以下のように値が固定されています。

これを、各インスタンスごとに柔軟に値を設定できるようmain.rbを書き換えてみましょう。その際は、new演算子に引数を渡して値を設定します。

こうすることにより、インスタンスごとにパラメータを自由に設定できるようになりました。

例えば、3人の勇者を作成しても、各勇者ごとに違ったパラメータを設定できるようになります。

これでだいぶ柔軟に勇者を作成することができるようになりました。しかし、これでもまだまだ改善できる点はあります。

まず、今はinitializeメソッドの引数としてnamehpoffensedefenseの3つを設定しているのですが、引数を見ただけではどのパラメータに値を渡しているのかがわかりません。そこで、main.rbinitializeメソッドを編集してもっとわかりやすくしていきましょう。そのときに使用するのがキーワード引数です。

上のコードのようにすると、どのパラメータにどういう値を渡しているのかが一目瞭然です。そのため、コードの可読性が上がりグッと読みやすくなります。

ただ、こちらももう少し改善することができます。今のままではnew演算子で渡す引数の数が増えるとinitializeメソッドの引数も増やす必要があり、変更箇所が多くなってしまいます。なので、以下のようにmain.rbinitializeメソッドの引数を変更し、ハッシュとして値を受け取れるようにしましょう。こうすることで、new演算子で渡す引数の数が増えても変更箇所が少なくて済みます。

これでinitializeメソッドの引数の記述をだいぶスッキリさせることができました。ここで最後にもうひと押し。initializeに渡す引数はnew演算子においてhp: 500, offense: 150, defense: 100というようなハッシュの形式(キーとバリューの組み合わせ)となっています。そのため、main.rbinitializeに渡せる引数はハッシュのみになるよう限定してあげましょう。そうすることで、ハッシュ以外の値を引数で渡した場合エラーとなってくれるので、予期せぬバグが発生しにくくなります。

以上でだいぶ柔軟に初期値を設定できるようになりました。次のパートからはセッター、ゲッターの記述をよりシンプルにする方法を学んでいきます。

議論

2 質問

このコースの評価は?