6367be2524
Meta programming is becoming more and more popular. The popularity of Meta programming comes from the fact that many problems are made significantly easier. There are a few specialized Meta tools out there, for instance Class:MOP which is used by Moose to track class metadata. Meta::Builder is designed to be a generic tool for writing Meta objects. Unlike specialized tools, Meta::Builder makes no assumptions about what metrics you will care about. Meta::Builder also makes it simple for others to extend your meta-object based tools by providing hooks for other packages to add metrics to your meta object. If a specialized Meta object tool is available to meet your needs please use it. However if you need a simple Meta object to track a couple metrics, use Meta::Builder. Meta::Builder is also low-sugar and low-dep. In most cases you will not want a class that needs a meta object to use your meta-object class directly. Rather you will usually want to create a sugar class that exports enhanced API functions that manipulate the meta object.
22 lines
1 KiB
Text
22 lines
1 KiB
Text
Meta programming is becoming more and more popular. The popularity
|
|
of Meta programming comes from the fact that many problems are made
|
|
significantly easier. There are a few specialized Meta tools out
|
|
there, for instance Class:MOP which is used by Moose to track class
|
|
metadata.
|
|
|
|
Meta::Builder is designed to be a generic tool for writing Meta
|
|
objects. Unlike specialized tools, Meta::Builder makes no assumptions
|
|
about what metrics you will care about. Meta::Builder also makes
|
|
it simple for others to extend your meta-object based tools by
|
|
providing hooks for other packages to add metrics to your meta
|
|
object.
|
|
|
|
If a specialized Meta object tool is available to meet your needs
|
|
please use it. However if you need a simple Meta object to track
|
|
a couple metrics, use Meta::Builder.
|
|
|
|
Meta::Builder is also low-sugar and low-dep. In most cases you will
|
|
not want a class that needs a meta object to use your meta-object
|
|
class directly. Rather you will usually want to create a sugar
|
|
class that exports enhanced API functions that manipulate the meta
|
|
object.
|