classのインターフェイスについて
RubyでClassを作っているのですが、どちらのインターフェイスの方が良いのか悩んでいます。
パターンA
class Hoge
def piyo=(piyo_data)
#do_something
@piyo = piyo_data
end
def fuga=(fuga_data)
#do_something
@fuga = fuga_data
end
def send
Api.call({
piyo: @piyo,
fuga: @fuga
})
end
end
# Usage
hoge = Hoge.new
hoge.piyo = piyo
hoge.fuga = fuga
hoge.send
パターンB
class Hoge
def send(piyo_data, fuga_data)
Api.call({
piyo: piyo(piyo_data),
fuga: fuga(fuga_data)
})
end
private
def piyo(piyo_data)
#do_something
piyo_data
end
def fuga(fuga_data)
#do_something
fuga_data
end
end
# Usage
hoge = Hoge.new
hoge.send(piyo, fuga)
パターンAは、いちいち各メソッドでデータをセットしていくのが使う側からすると面倒くさそうに見えます。パターンBは、引数が増えてきたときにわかりにくそうに見えます。