1. ホーム
  2. ruby

[解決済み] メソッドパラメータの代わりにハッシュを渡す【非公開

2023-08-08 05:29:22

質問

Ruby (および動的型付け言語全般) では、具体的なメソッドのパラメータを宣言する代わりにハッシュを渡すことが非常に一般的な慣習となっていますね。例えば、パラメータを持つメソッドを宣言し、このように呼び出すのではなく、ハッシュを渡します。

def my_method(width, height, show_border)
my_method(400, 50, false)

を使えば、このようにできます。

def my_method(options)
my_method({"width" => 400, "height" => 50, "show_border" => false})

それについて皆さんのご意見を伺いたいと思います。それは良い習慣なのか悪い習慣なのか、私たちはそれを行うべきなのかそうでないのか?どのような状況でこの方法を使うことが有効で、どのような状況で危険となるのでしょうか?

どのように解決するのですか?

どちらのアプローチにも利点と欠点があります。標準引数の代わりにオプション ハッシュを使用すると、メソッドを定義するコードの明快さは失われますが、オプション ハッシュを使用することで擬似的に名前付きのパラメータが作成されるため、メソッドを使用するたびに明快さを得ることができます。

私の一般的なルールは、メソッドに多くの引数 (3 か 4 以上) があるか、多くのオプション引数がある場合、オプションハッシュを使用し、そうでなければ標準引数を使用することです。しかし、オプション ハッシュを使用するときは、可能な引数を説明するメソッドの定義に常にコメントを含めることが重要です。