我目前正在处理一个非常复杂的程序,该程序有多个不同的组件,并在不同阶段部署在客户端站点上。发布管理已经到位,但是有点繁琐,我需要改变一个相当基本的组件,它将影响到所有其他将用它构建的库。
我的问题是,而不是宣布它作为一个突破性的变化,并迫使所有库更新到下一个版本的新组件,我想我可以使用反射来看看我添加的新类是否存在,如果存在,使用它,否则继续使用旧方法。几个月后,我将删除这个,删除旧的方法。这意味着处于不同部署阶段的各种客户端团队不会突然发现他们必须同时升级所有内容,或者根本不升级。
这似乎会有任何明显的缺点,它被认为是可怕的做法使用反射来"检测版本",或者这听起来不错吗?
确实感觉有点俗气,但在您描述的情况下似乎没有其他选择。但是,您也可以尝试以编程方式显式地比较版本号。
一般来说,在生产环境中支持多个版本会增加复杂性。通过反射之类的方式隐藏升级,并不能让客户正确地了解已经发生的更改。你可以而且应该让升级对客户来说尽可能的明显。如果您正在缓慢地推出更改,这很好,但这并不能使您免除沟通的责任。使用反射检测和使用新特性并不是最糟糕的做法。我认为你不应该过于担心使用它。