10
サードパーティのライブラリを使用する-常にラッパーを使用しますか?
私が携わっているほとんどのプロジェクトは、いくつかのオープンソースコンポーネントを使用しています。一般的な原則として、コードのすべてのコンポーネントをサードパーティのライブラリにバインドするのを常に避け、代わりにカプセル化ラッパーを経由して変更の痛みを避けるのは良い考えですか? 例として、ほとんどのPHPプロジェクトはlog4phpをロギングフレームワークとして直接使用します。つまり、\ Logger :: getLogger()を介してインスタンス化し、-> info()または-> warn()メソッドなどを使用します。ただし、何らかの点で優れた仮想ロギングフレームワークが表示される場合があります。現状では、log4phpメソッドシグネチャに密接に関連するすべてのプロジェクトは、新しいシグネチャに適合するために、数十箇所で変更する必要があります。これは明らかにコードベースに大きな影響を与え、変更は潜在的な問題です。 この種のシナリオから将来の新しいコードベースを保証するために、ロギング機能をカプセル化し、最小限の変更で将来のロギングの動作方法を変更するために、ロギング機能をカプセル化し、簡単にできるようにするラッパークラスをしばしば検討します(そして時々実装します) ; コードがラッパーを呼び出すと、ラッパーは呼び出しをロギングフレームワークdu jourに渡します。 他のライブラリにはもっと複雑な例があることを念頭に置いて、私は過剰に設計しているのですか、それともほとんどの場合賢明な予防策ですか? 編集:その他の考慮事項-依存性注入とテストダブルを使用するには、とにかくほとんどのAPIを抽象化する必要があります(「コードの実行を確認し、その状態を更新しますが、ログコメントの書き込み/実際のデータベースへのアクセスはしません」)。これは決定者ではありませんか?