0

サードパーティのマッピング ライブラリを多用する C++ ソリューション (VC++ 2005) があります。各ラッパー ライブラリは同じ API を持ちますが、異なるサードパーティ マッピング ライブラリをラップします。

これは反復的な方法で行っていますが、クラスを特定のマッピング ライブラリの使用からラッパーの使用にリファクタリングするときに、すべての使用/参照が更新されるようにするにはどうすればよいか疑問に思っています。定義上、多くのラッパー クラスはラップされたライブラリ クラスと相互運用可能であるため、MapXYZ::Attribute の 1 つのインスタンスを OurMaps::Attribute に更新するのを簡単に見逃す可能性があり、マッピング ライブラリを切り替えるまではすべて機能します。

このようなシナリオでアドバイスできるツールやプロセスはありますか?

4

1 に答える 1

2

まず第一に、ラッパーがラップされたクラスと相互運用可能である場合、それはそれらが交換可能であることを意味しません。したがって、元のライブラリのクラスを誤って使用しないようにするには、#includeそれらのヘッダーへの参照をすべて削除してください。コンパイラは、元のクラスとそのメンバーの使用について不平を言うでしょう。注: ラッパー lib のヘッダーにこれらの heaer を含めることはできません。そうしないと、抽象化がリークし、現在のライブラリを置き換えることができなくなります。

さらに、他のライブラリは同様のメソッドと属性を提供しない可能性があるため、ラッパーについては、使用しているライブラリの API にあまり固執しないでください。代わりに、使用する基本的な概念に基づいてラッパー API を定義し、将来使用する可能性のあるライブラリは何らかの方法で提供する必要があります。つまり、API は特定のサードパーティ ライブラリが提供するものと似ているべきではなく、代わりに必要なものを示す必要があります。つまり、API は言語の動詞と名詞を提供し、問題のドメインをユーザーが考える方法で記述しラッパークラスがそれをラップされたライブラリの言語に変換します。
そうすれば、コード内のマッピング ライブラリをきれいに抽象化できますが、class ThirdPartyX単にclass MyWrapperX.

于 2013-05-02T10:55:55.480 に答える