为了账号安全,请及时绑定邮箱和手机立即绑定

您是否更喜欢重复代码而不是实用程序类?

您是否更喜欢重复代码而不是实用程序类?

汪汪一只猫 2023-08-23 11:39:31
我们有一个 Java 服务,可以处理大量用户上传的文件,以及为不同模型执行准备这些文件的任务。其中一个准备阶段包括覆盖 json 文件中的值。十分之四的任务应该执行此操作。我创建了一个静态实用程序类,其中包含一个函数来覆盖 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的角度来看,你认为这个类和方法不好吗?为什么以及为什么不呢?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

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

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

然而,可能有比只有一个方法的静态实用程序类更好的地方来放置它。

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

然而,将 JSON 作为字符串传递似乎有一种代码味道,特别是当您通过字符串操作来操作它时。使用 JSON 库(例如 Jackson 或 org.json)可能是个好主意。如果您使用 Jackson 的数据绑定功能(使用 Jackson 的最流行方式),您将创建一个具有实际 getter 和 setter 的 POJO,Jackson 负责将其转换为 JSON。就 org.json 而言,您使用一个与JSONObjecta 非常相似的类Map<String, Object>,并且可以像处理映射一样对其进行变异,并且可以使用单个方法将其与 String 相互转换。


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信