Extension Responsibility

昨日紹介した論文「Analyzing Module Diversity」は、少しだがRubyについても言及している。各言語のmodule systemの分類項目の一つとして、Extension Responsibilityという項目があって、これは、クラス拡張をクラス作成側が行うか、クラス利用側が行うかを示す。Rubyのmodule mixinは、クラス作成側による拡張と分類しているのだが、これは変ではないだろうか?クラス利用側でも対象クラスにmodule mixinすることはできるのだから。

class Foo
  include Bar
  ...
end