gpt4 book ai didi

java - Web应用程序中有多个版本: duplication or messy code?

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:39 24 4
gpt4 key购买 nike

我习惯用Git中的标签来管理版本。但对于独立应用程序来说,那是很久以前的事了。现在的问题是我有一个 Web 应用程序,并且同一应用程序可能会连接希望与不同版本的应用程序进行通信的客户端。

因此,我以这种方式向输入添加了该版本的路径变量:

@PathParam("version") String version

客户端可以在URL中指定版本:

https://whatever.com/v.2/show

然后在代码中我添加了如下条件:

if(version.equals("v.2") {
// Do something
}
else if(version.equals("v.3") {
// Do something else
}
else {
// Or something different
}

问题是我的代码变得非常困惑。所以我决定以不同的方式来做。我仅在代码的一个点添加了此条件,然后根据版本调用不同的类:

MyClassVersion2.java
MyClassVersion3.java
MyClassVersion4.java

现在的问题是我有很多重复。

我也想解决这个问题。我现在该怎么做才能拥有一个网络应用程序:

1) Deal with multiple versions
2) It is not messy (with a lot of conditions)
3) Doesn't have much duplication

最佳答案

通常,当我们谈到应用程序的旧版本时,我们的意思是该版本的行为和外观是一成不变的,不会改变。如果您对该应用程序的源文件进行哪怕最轻微的修改,那么其行为和/或外观可能会发生变化(根据墨菲定律,它将会发生变化),这是 Not Acceptable 。

所以,如果我是你,我会将旧版本的所有源文件锁定在源代码存储库中,这样任何人都无法提交它们,永远。这种方法解决了问题并规定了您必须如何处理其他所有事情:每个版本都必须有自己的一组源文件,这些文件与所有其他版本的源文件完全无关。

现在,如果应用程序的旧版本必须与最新版本有一些共同点,并且这个东西发生了变化(例如数据库),那么我们并不是在谈论应用程序的不同版本,我们有更类似于不同皮肤的东西:应用程序的核心不断发展,但允许前段时间选择皮肤的用户坚持使用该皮肤。在这种情况下,其他人已经建议的多态解决方案可能是更好的方法。

关于java - Web应用程序中有多个版本: duplication or messy code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com