[解決済み] メソッドパラメータの代わりにハッシュを渡す【非公開
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 以上) があるか、多くのオプション引数がある場合、オプションハッシュを使用し、そうでなければ標準引数を使用することです。しかし、オプション ハッシュを使用するときは、可能な引数を説明するメソッドの定義に常にコメントを含めることが重要です。
関連
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] インスタンスメソッドをモンキーパッチする場合、新しい実装からオーバーライドされたメソッドを呼び出すことは可能ですか?
-
[解決済み] newの代わりにalloc initを使用する
-
[解決済み】既存のオブジェクトインスタンスにメソッドを追加する
-
[解決済み] ruby send メソッドに複数のパラメータを渡す
-
[解決済み] Rubyで空のファイルを作成する:"touch "と同等?
-
[解決済み] Ruby: 文字列の最初の文字を取得する方法
-
[解決済み] Rubyで2つの配列のマージとインターリーブ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] レスキューVSシドキック?[クローズド]
-
[解決済み] Rubyの理想的なプロジェクト構造
-
[解決済み] 文字列を正規表現に変換する ruby
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
-
[解決済み] Rubyのプライベートモジュールメソッド
-
[解決済み] Rubyでjavaのインターフェースに相当するものは何ですか?
-
[解決済み] Hash.new([]などのHashのデフォルト値を使用すると、予期せぬ動作(値が消える/変わる)が発生します。)
-
[解決済み] RubyでCtrl-cをキャプチャする
-
[解決済み] Rubyで1行でメソッドを定義するには?
-
[解決済み] キュウリのステップを再利用