リスコフの置換原則
サブタイプはスーパータイプと置換可能でなければならないという原則。SOLID原則の「L」にあたるもの。
この原則に従うことで、スーパークラスが使えるところではサブクラスが使えることになり入れ替えても支障をきたさない。
【参考】
表明プログラミング
「起こるはずがない」と思っていることがあれば、それをチェックするコードを追加する。
ただし、表明は起こり得ないことをチェックするのであって、本来のエラーハンドリングに表明を使ってはいけない。
assertメソッドを定義して表明するコードのサンプル(コードは「リファクタリングRubyエディション」から引用)
class Account
include Assertions
# ...
def withdraw(amount)
assert("amount too large") { amount <= @balance }
@balance -= amount
end
end
module Assertions
class AssertionFailedError < StandardError; end
def assert(message, &condition)
unless condition.call
raise AssertionFailedError.new("Assertion Failed: #{message}")
end
end
end
【参考】