Java 名称中包含版本的 class 的命名约定?

Java naming convention for a class with version in its name?

假设我有不同的 classes 来处理同一协议的不同版本(可能具有不同的接口)。例如,一个名为 My Protocol (MYP) 的虚构协议:

我的协议 (MYP) 版本 1.0、1.1、2.0、2.2 等...

我能想到的一些命名示例是:

MYP10Handler, MYP11Handler, MYP20Handler, MYP22Handler, ...

MYP1_0HandlerMYP1_1HandlerMYP2_0HandlerMYP2_2Handler、...

如果使用第一个选项,例如,如果协议达到更高版本,就会出现歧义。例如版本11.0(十一):

MYP11Handler: 版本 1.1 还是 11.0?

MYP110Handler:版本 11.0 还是 1.10?

然而,第二种选择似乎避开了驼峰规则。

通常如何命名这些类型class?对此有更好的做法吗?

您应该将整个程序的某个版本的所有 files/classes 都放在一个包中,该包的名称代表该特定版本。

当你想添加一个新版本的协议时,你应该创建一个新包,复制所有旧文件,然后从新文件开始,所有 files/classes 应该有相同的名称在每个包裹中(com.yourname.myprotocol14.MyProtocolHandler,当然 不是 com.yourname.myprotocol14.MyProtocolHandler14

你必须决定在包名上写版本的精确度:你可以只写主要版本(com.yourname.myprotocol10 表示版本 10.Xcom.yourname.myprotocol12 表示版本 12.X) 或决定编写次要版本(com.yourname.myprotocol10 用于版本 1.0com.yourname.myprotocol12 用于版本 1.2),由您决定。

用户可以通过导入com.yourname.myprotocol[version number]来决定他想使用什么版本的库(假设它是一个库),因此你应该把所有与库相关的文件放在每个包。