APIを作成しておいしい霜付けケーキを作っているとします。これはすばらしいことですが、文書化されていますが、時にはエラーが発生する場合があります。また、ユーザーがIRB経由でライブラリを探索していて、プロトタイピング中に変数を指差したことがあります。rspec-expectations gemを使用してAPIの引数を検証する
これは、私は通常、パラメータがnilであってはならないことを発信者に知らせる方法/他の制約がありますされています
:# Cake.rb
def make_cake(cake_type, *arguments)
raise "cake_type required!" unless !cake_type.nil?
raise "cake_type must be in KNOWN_CAKES" unless KNOWN_CAKES.include?(cake_type)
# blah blah blah
end
しかし、私は最近rspec-expectations
宝石を使用して、このような何かを検討してきました
# Cake.rb
include RSpec::Matchers
def make_cake(cake_type, *arguments)
cake_type.should_not be_nil, "cake_type required"
KNOWN_CAKES.should include(cake_type), "cake_type not found"
end
長所:
- 簡潔なDSLはそれ人々が開発のための本当の簡単な読み取りますAPIに対抗します
- RSpec :: Expectations :: ExpectationNotMetErrorには、予期した値と実際に受け取った値を与える優れた例外書式があります。
CON(S?):
- RSpecの::期待:: ExpectationNotMetErrorは少しすぎ冗長かもしれません。
だから、このアプローチ:良いアイデア、または悪いアイデア?どのような設計原則に違反していますか?