外部のバージョン管理されたAPIを使用するクラスを含むJavaパッケージに名前を付ける方法はありますか?外部APIをバージョン管理するためのJavaパッケージの名前付け
サービスのメジャーマイナーセマンティックバージョニングスキームがあり、そのAPIの特定のバージョンと互換性があり、バインドされたコンシューマーを実装する必要があるとします。パッケージ(およびクラス)に名前を付けるベストプラクティスは何ですか?
現時点では、${service}_${M}_${N}
(M =メジャーバージョン、N =マイナーバージョン)というスキームを使用しています。例:com.example.theService_1_0.
。 しかし、sonarqubeはそれが慣例と一致しないと訴えています。 もちろん、このルールを無効にすることはできますが、ベストプラクティスがあるのだろうかと思います。
WebService、REST、CORBAのコンシューマ実装が発生したため、REST固有のアプローチだけでなく、一般的なアプローチも探しています。そして、私は確信していませんが、artifact-versioning(mavenのように)はここでうまくいきます。なぜなら、それは実装ではなくAPIであるからです。
api versioningについて質問がありますが、それは消費者ではなくプロデューサーに関するものです。
潜在的な不要なコードの再書き込みを意味しません。プロデューサのバージョンを変更するたびに、そのクラスを使用するすべてのクラスのパッケージ名とすべてのインポート文を変更する必要があります。 – 7663233
金融業界では、コードを重複させずに並べて保つだけで、コンシューマーを別々に保守するといういくつかのプロジェクトでは、あるコンシューマー・バージョンに変更しても、別のインプレッションには影響しません。新しいバージョンが登場すると(何年もの間)、既存のコードを複製することから始まります。これは基本的にシェアード・ニアのアプローチです。それは確かに実用的な練習ですが、私は(より良い?)代替案があるのだろうかと思いますか? –
ターゲットAPIバージョンの後にパッケージの名前を付けません。プロジェクトは特定のAPIバージョンに依存関係を宣言する必要があります。異なるAPIバージョンをターゲットにする(つまり、依存バージョンを変更する)たびに、独自のバージョン番号でプロジェクトをバージョンアップするだけです。例:myproject version 1.1 .8はtheapiバージョン2.3.0を使用し、myProjectバージョン1.2.0はtheapiバージョン2.4.6を使用します。 – Berger