メタプログラミングには時と場所があります。Ruby の本で頻繁に言及されていると思います。なぜなら、人々は Ruby でできることを他の言語ではできないことを自慢したいからです。
メタプログラミングとは、「バーガー」や「ヌードル スープ」の日本語を知らなくても、「これをください」の日本語を知っていて、メニューの項目を指さすことができるようなものです。これにより柔軟性が向上しますが、何が行われているかを正確に知るには、より多くのコンテキストが必要です。
を可能にする ActiveRecord を作成している場合find_by_foo
、メタプログラミングは理にかなっています。
zombie-chaserなどの変異テスト ライブラリや、 Small Eigen Colliderなどの Ruby のさまざまな実装をテストする特性評価テスト アプリケーションを作成している場合は、メタプログラミングが理にかなっています。
ただし、アプリケーションを作成している場合は、通常、メタプログラミングではなく、単にプログラミングする必要があります。たとえば、instance_variable_set
アプリケーションで使用している場合、それはあなたがどれだけ熟練しているかを示すというよりも、コードのにおいです。
関連する質問として、https://stackoverflow.com/questions/1236191/what-will-i-learn-from-metaprogramming-rubyとRuby メタプログラミングのオンライン チュートリアルとMetaprogramming how much is too much? があります。.
「Metaprogramming Ruby」という本は、メタプログラミングだけでなく、Ruby のしくみについても教えてくれるので、本当にお勧めです。