TDDの実践の一部は、最も単純で縮退したケースをテストすることから始まり、エッジからのコア機能を緩和することです。私はすべての公共のポイ捨てのアイデアを好きではないTDD、Ruby、&nil引き数を処理する
def my_method(arg)
if arg.nil?
do_the_thing
return
end
do_the_real_thing
end
:私はRubyで働いているので、私は非常に多くの場合、自分はこのようにテストを書く見つける:
it "does the thing if given nil" do
expect { my_method(nil) }.to do_the_thing
end
と、このような生産コードこのようなガード節を持つメソッドではありますが、Rubyの動的性質を考えると、どこに線を引いていますか?有効な引数を渡す責任を呼び出しコードに置くことは妥当ですか?
私は、過度に守備的なコードでは散らばらない、集中的で表現力豊かな方法を書いていますが、堅牢で正確なシステムを構築したいと考えています。
エッジケースから私に訴えかける習慣ですが、この特定のエッジケースをどのように扱うべきかはよく分かりません。
@sawa私の質問は、テストが推進しているデザインの側面についてです。 – ivan
パラメータにデフォルト値を使用できますか?それはメソッドに渡される 'nil'を回避するのに役立ちます –
多くの同様の防衛コードスニペットを持っているなら、たぶんあなたはTDDの** refactor **の部分を見逃しました。 – Aetherus