2016-12-21 6 views
1

同じプロトコルの異なるバージョン(おそらく異なるインターフェースを持つ)を扱うクラスが違うとします。例えば、私のプロトコル(MYP)という名前の架空のプロトコル:名前にバージョンのあるクラスのJava命名規則?

マイプロトコル(MYP)バージョン1.0、1.1、2.0、2.2、等...私は考えることができ

いくつかの命名例は以下のとおりです。

MYP10HandlerMYP11HandlerMYP20HandlerMYP22Handler、...

MYP1_0HandlerMYP1_1HandlerMYP2_0HandlerMYP2_2Handler、...

たとえば、最初のオプションを使用する場合、プロトコルが上位バージョンに達するとあいまいさがあります。たとえば、バージョン11.0(11個):

MYP11Handler:バージョン1.1または11.0?

MYP110Handler:バージョン11.0または1.10?

しかし、2番目のオプションは、Camel Caseルールから逃れるようです。

通常、これらのタイプのクラスに対してどのように名前付けが行われますか?これにはより良い方法がありますか?

+0

特定のテクノロジまたはプログラムでベストプラクティスを要求しているので、この問題を解決するために投票しています – Frakcool

+0

これは[Google Javaスタイルガイド](https://google.github.io /styleguide/javaguide.html)? –

+2

バージョン番号をクラス名に入れないでください。むしろ 'com.company.protocol.11_0.MyHandler'のようなパッケージ名に入れてください。その理由は、 'com.company.protocol.MyHandler'のないインターフェースであるべきです。 –

答えて

4

特定のバージョンを表す名前を持つパッケージ内のプログラム部分全体の特定のバージョンに対するすべてのファイル/クラスを指定する必要があります。

プロトコルの新しいバージョンを追加する場合は、新しいパッケージを作成し、すべての古いファイルをコピーして新しいものから始め、すべてのファイル/クラスはすべてのパッケージで同じ名前にする必要があります(com.yourname.myprotocol14.MyProtocolHandler、もちろんのないcom.yourname.myprotocol14.MyProtocolHandler14

あなたは、パッケージ名のバージョンを書いたものな精度で決定する必要があります:あなただけ(バージョン12.Xのバージョン10.Xcom.yourname.myprotocol12ためcom.yourname.myprotocol10)メジャーバージョンを置くかに決めることができましたマイナーバージョン(com.yourname.myprotocol10バージョン、com.yourname.myprotocol12バージョン01用))、それはあなた次第です。

ユーザーが(それがライブラリであると仮定)、彼はちょうどcom.yourname.myprotocol[version number]をインポートして使用したい、そしてこのような理由のためにあなたがすべてのパッケージ内のライブラリにすべてのファイルの相対を置くべきライブラリのバージョンを決定することができます。

+0

あなたのソリューションは非常に合理的だ。しかし、バージョンを書くのに使う精度、* 'com.yourname.myprotocol120'のような衝突を避ける方法を決めるときには、' '1.20.X'や' '12.0.X '? – Hydren

+1

@Hydren私は、バージョン1.20では 'com.yourname.myprotocol1_20'、バージョン12.0では' com.yourname.myprotocol12_0'のような空想的なものを使用せずに指定する方法はないと思います。バージョン1.20では 'com.yourname.myprotocol.1.20'、バージョン12.0では' com.yourname.myprotocol.12.0'を使用してください。あまりambiguosを使わないようにするには、javadocで@versionを使うことができます:) – Someone