9

これはユースケースタイプの質問ですが、より広く適用できるほど一般的でもあります。

要するに、私は多かれ少なかれコマンドライン ラッパーであるモジュールに取り組んでいます。〇当然。(誰かがそれを望んでいる場合を除いて) あまり詳しく説明しなくても、システムがそれほど複雑になることはありませんが、このフレームワークに 3 つまたは 4 つのオブジェクトがあるのは自然なことだと感じました。最後に、これは私が公開するオープンソースのものであり、同じ会社の数人の開発者が取り組んでいるモジュールではありません。

まず、Class::Std を使用して OO を実装しました。これは、Perl のベスト プラクティス (Conway、2005 年) がインサイド アウト オブジェクトを使用する理由について適切な議論を行ったためです。どの属性にアクセスするか、適切なカプセル化などを完全に制御します。また、彼の設計は驚くほどシンプルで賢いものです。

私はそれが好きでしたが、誰も実際にこれを使用していないことに気付きました。実際、コンウェイ自身はもうこれを推奨していないようです?

というわけで、みんなの大好きなMooseに引っ越しました。使い方は簡単ですが、私がやりたいことに対しては機能的にやり過ぎです。大きな大きな欠点は、モジュールの依存関係が多数あるため、モジュールのユーザーがそれらをすべてダウンロードする必要があることです。マイナーな欠点は、私が実際に必要とする以上の機能を備えていることです。

推奨事項とは何ですか? おそらく時代遅れのモジュールを使用するように強制したり、モジュールのすべてのユーザーに Moose とそのすべての依存関係をダウンロードするように強制したりして、仲間の開発者に迷惑をかけますか?

適切な Perl OO フレームワークの 3 番目のオプションで、これらの 2 つのいずれでもない、人気があるものはありますか?

4

5 に答える 5

5

公平を期すために言うと、最近の Perl の世界ではほとんどすべての興味深いものが依存関係として Moose に依存しているのを見て、私はそれが他の「仲間の Perl 開発者」にとって大きな負担になっているとは思いません。

私たちが話しているように、彼らはすでにそれをインストールしている可能性があります!

編集:いくつかの統計:

Moose は現在、"Most Depended on" モジュール リストであるAliases top 100で 65 位と評価されており、1637 以上のパッケージが Moose に依存しています。それはのようなものとほぼ同じくらいTime::HiResで、それ以上のDBIものです。

于 2010-06-12T16:49:10.427 に答える
5

現在受け入れられている「最新の Perl OO フレームワーク」は Moose です。ユーザーにダウンロードさせるか、 PAR::Packerを使用してインストールでモジュールにバンドルすることができます。

「しかし、私はCPANを使用できません」からの引用(...ユーザーがインストールしたくないため):

ユーザーに tarball を処理しているだけだと仮定すると、Module::Install は解決策を提供します - スクリプトを script/ に入れてから実行する場合

install_script(glob 'script/*');
auto_install;

Makefile.PL で、'make install' がスクリプトを便利な場所に配置するだけでなく、'make installdeps' が cpan (または存在する場合は cpanplus) を呼び出して、不足しているすべての依存関係をインストールします。

于 2010-06-12T16:56:03.963 に答える
4

さて、Mooseに似ていますが、すべての依存関係 (およびいくつかの機能) を持たないMouseがあります。また、起動も少し速くなります。自分で試したことはありませんが、一般的によく考えられています。

于 2010-06-12T16:42:54.857 に答える
4

既存の細かい回答に追加するには...

PBP で推奨されたことのいくつかは悪いアドバイスではありませんが、Perl は続けています。それが書かれたとき、裏返しのオブジェクトは新しいホットネスでした. 今ムースはすべてを吸収しました。Class::Std の完全なカプセル化で Moose のパワーを提供するMooseX::InsideOutがありますが、規律のないプログラマーと一緒に作業しない限り、実際には必要ありません。

Moose のこれらの機能は、今は必要ありませんが、いずれ必要になります。それらすべてが必要ない場合でも、Moose を使用すると、興味深い機能が必要になるたびに、Yet Another OO System を使用して学習する必要はありません。そして、同時に 2 つの機能が必要になることは禁じられています。

于 2010-06-13T00:20:53.137 に答える
0

2010 年現在積極的に維持されている Perl Module Object::InsideOut もあります。

Mooseの前身のようなもの、または明確にするために、開発はMooseの開始と同時に独立して開始されました。

存在は知っていますが使ったことはありません。

于 2011-02-10T15:49:23.770 に答える