6

最初にいくつかの背景

私たちの会社は、開発者が 4 人しかいない小さなスタートアップですが、開発プロセスを簡素化し、生産性を向上させるために、製品を再利用可能なモジュールにリファクタリングし始めています。その過程で、必要に応じて単体テストを導入したいと考えています。

小規模なスタートアップではよくあることですが、あまりにも多くの開発時間を無駄にする余裕はありませんが、中長期的にビジネスを成功させるためには、これが非常に重要であることがわかります。

現在、2 つのエンドユーザー製品があります。どちらも、主に Web サービス、安らかな API、巨大なデータベースで構成される、独自の内部ビジネス層の上に構築された Laravel (PHP) アプリケーションです。

このビジネス レイヤーは、これらの製品のほとんどのデータを提供しますが、それぞれがまったく異なる用途で使用します。完成間近の 2 つの製品を維持および改善する以外に、近い将来に他の製品を構築する予定です。

そのために、これらの (および将来の) 製品の共通ロジックを再利用可能で分離されたモジュールに抽象化する予定です。Composer についての知識はほとんどありませんが、明らかな選択は Composer のようです。

さて、本当の質問に

テスト駆動型の方法で内部パッケージを開発する方法について、他の意見をお聞きしたいと思います。各モジュールは、独自の単体テストとその依存関係を必要とするコンポーザー パッケージにする必要がありますか?それとも、各モジュールの名前空間を使用して単一のパッケージを構築する必要がありますか?

少し明確にするために、たとえば CurlWrapper モジュールが必要であり、これは InternalWebserviceAPI モジュール (およびその他のいくつか) で必要になります。

個人的には、モジュールごとに完全に個別のパッケージを用意し、composer.json で依存関係を宣言するというアイデアが好きです。これにより、精神的に分離が強制され、いつかそれらのパッケージの一部をオープンソースとして公開できるようになります。また、更新が必要な依存モジュールのバージョンを凍結できるため、これらのモジュールの重大な変更を簡素化することもできます。

ただし、この分離により複雑さが増し、保守とテストが難しくなる可能性があると思います。これは、各モジュールが独自のプロジェクトである必要があり、非常に多くのモジュールを追跡するための人員が不足しているためです。小さなプロジェクト。

Composer は本当に私たちの問題に対する理想的なソリューションでしょうか? もしそうなら、どちらが推奨されますか: 単一のパッケージまたは複数のパッケージ?

編集1:

これらのモジュールのほとんどが次のようになることを指摘したいと思います。

  • ライブラリ (つまり、YouTube の URL から ID を取得するか、日付を「x 秒前」に変換する)
  • ラッパー (連鎖可能な CURL ラッパーのようなもの)
  • Facades (当社の複数の Web サービスのうち、残りの 2 種類が必要です)
4

2 に答える 2

2

はい、composer が最適です。単一のパッケージを使用することをお勧めします。

これらのモジュールがいつ必要になるかわかりません。大きなパッケージを作成し、パッケージからいくつかのクラスが必要なときにパッケージを複数のパッケージに分割するのにより多くの時間を費やす必要があるよりも、多くの単一パッケージを作成し、それらすべて (または単一のパッケージ) を含めることができる方が適切です。

たとえば、Symfony2 プロジェクトを参照してください。これは、フルスタックの Symfony2 フレームワークにすべて必要な多数のコンポーネントですが、独自のプロジェクトでいくつかのコンポーネントを使用することもできます (Drupal8 が行っているように)。さらに、Symfony2 はますます多くのパッケージを取得します。小さなパッケージがあると非常に便利なように思われるため、人々はいくつかの大きなパッケージをバラバラにすることに時間を割いています。

于 2013-03-05T22:02:22.337 に答える
1

単一のパッケージを使用する代わりに、サブプロジェクトごとに個別の composer.json ファイルを使用します。

これには、すべてのライブラリを同じリポジトリに保持できるという利点があります。コードをリファクタリングするときに、オートロードと依存関係をサブライブラリごとに分割することもできます。

ライブラリを独自のバージョン管理されたパッケージにスピンオフしたい場合は、最後のステップに進み、それを独自のリポジトリにチェックインできます。

于 2013-06-11T20:43:54.960 に答える