リスコフの置換原則

サブタイプはスーパータイプと置換可能でなければならないという原則。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

【参考】