といっても、Ruby における module という言語要素の理解をするためだけの記事なので、本質的には rails / scaffold とは関係ないかもしれません。
modelname_helpers.rb は module として定義されていました。
大学院時代の
モジュールという言葉も曖昧な言葉なのですが、個人的によく使っていた定義は「再利用可能なプログラム単位・部品」です。
例えば、java における package や class は上記の定義においてモジュールです。既存の package を import したり、既存の class の extend することでプログラムの再利用をしています。
Ruby の module は include という形でプログラムの再利用を行います。任意の class で
include ModuleNameとすることで、その module で定義されたインスタンスメソッドや定数などを使えるようです。
公式ドキュメントではない(?)ですが、Programming RubyのWeb版でちょっと触れられているのを見つけました。
class と module
この辺りについて書きたいことはあるけれど、何か難しく考えてるだけのような気がします。ざっくり言うと、
- class は(class だけに)分類を行ってその共通部分を抽象化する(スーパークラスにする)
- 分類から漏れた・分類にそぐわない共通部分を module として抽象化する(抽象サブクラスにする)
0 件のコメント:
コメントを投稿