それらは本番環境に対応していると思います-私はそれらを本番環境で使用しています-しかし、考慮すべき点がいくつかあります。
パフォーマンス
MooseX::Declare
依存関係は、コンパイル時にほとんどすべての魔法を実行します。プログラムのサイズによっては、0.5 秒から数秒の追加の初期化オーバーヘッドが発生する場合があります。これが問題になる場合は、 MooseX::Declareを使用しないでください。
実行時の主なオーバーヘッドは型と引数のチェックです。これは (理想的には) とにかく実行する必要があります。とはいえ、Moose 型の制約にはいくつかのオーバーヘッドがあります。具体的には、強制と、より複雑な (MooseX::Types::Structured-style) 制約です。パフォーマンスが問題になる場合は、これらを使用しないでください。
安定
MooseX::DeclareとMooseX::Method::Signature の外部構文が安定しました。しかし、内部が極端に変化する可能性があることを知っておくことは重要です。(幸いなことに、良い方向に変化します)
お分かりいただけると思いますが、署名自体は、Perl トークナイザー (toke.c) から盗まれた C コードの大きなブロックを使用して取得されます。実際には何も解析していないため、状況によってはこれが壊れる可能性があります。角かっこ内のビットは、純粋な Perl 用に設計されたPPIを使用して解析されますが、結果の PPI ツリーはハッキングされて、有用なものが取得されます。Devel::Declare自体がハックです。特定のキーワード (「role」、「class」、「method」など) を見た後、Devel::Declare を使用するモジュールは、ソース コードを手動で書き換える必要があります。 Perl パーサー。
まれなケースでは、Perl が segfault を起こす可能性があります。または、ソース コードを書き直すと、構文エラーが発生しますが、.xml がないと原因がわかりません-MO::Deparse
。誤ってMooseX::Declare構文を間違えた場合、モジュールがこれを検出して適切なエラーを返すという保証はありません。ALPHA メッセージはなくなったかもしれませんが、これはまだ内部的に暗く恐ろしいことを行っているため、それに備えておく必要があります。
アップデート
MooseX::Declare はあまり更新されていないため、Moopsなどの代替手段を検討することをお勧めします。個人的には、Perl 自体がクラス/メソッド/構文をネイティブにサポートし始めるまで、純粋な Moose を使い続けることにしました。