2

我们有一个 Java 服务,它处理大量用户上传的文件,以及为不同模型准备这些文件以执行的任务。

一个这样的准备阶段包括覆盖 json 文件中的值。10 个任务中有 4 个应该这样做。

我创建了一个静态实用程序类,其中包含一个函数来覆盖 json 文件中的值,例如

public static class ParameterUtils {
   public static String overrideParameter(String originalContent, String key, String newValue) {
     //4 lines of code that overrides this value and return modified content.
   }
}

然而,我的高级开发人员说,这个实用程序类几乎没有提供任何价值,而我试图保留 DRY 原则。最后我确实摆脱了这个实用程序类,现在覆盖 json 文件中的值的 4 行代码驻留在 4 个不同的文件中。

您是否认为从 OOP 的角度来看,这个类和方法不好?为什么和为什么不?

4

1 回答 1

1

不,在多个地方复制(稍微复杂的)代码绝对是不好的做法。

DRY 原则说“不要重复自己”。请记住这一点,您不想通过指示计算机多次覆盖此参数来重复自己。

但是,与只有一个方法的静态实用程序类相比,可能有更好的放置位置。

如果您使用它的 4 个文件都扩展了某个类,则可能将其设为受保护的静态方法。或者也许将它放在返回 JSON 字符串的类中。

但是,将 JSON 作为字符串传递似乎是一种代码异味,尤其是当您通过字符串操作来操作它时。使用 JSON 库(例如 Jackson 或 org.json)可能是个好主意。如果您使用 Jackson 的数据绑定功能(使用 Jackson 的最流行方式),您将创建一个带有实际 getter 和 setter 的 POJO,Jackson 负责将其转换为 JSON。在 org.json 的情况下,您使用一个与 aJSONObject非常相似的类,Map<String, Object>您可以像使用地图一样对其进行变异,并且可以使用单个方法将其转换为字符串和从字符串转换。

于 2019-09-25T03:42:31.933 回答