【问题标题】:Designing own implementations for code maintainability为代码可维护性设计自己的实现
【发布时间】:2018-02-02 03:10:13
【问题描述】:

我使用 Java 作为示例。假设我正在开发一个软件并且我有这个

CustomList extends ArrayList<ObjectMapper>

现在这已将自定义函数添加到 ArrayList。它是专门为满足 ObjectMapper 实例列表而设计的(可能是 JsonNode、TreeNode;属于杰克逊依赖项)。现在整个项目都利用了这个。但是有人提到了这一点:“如果 ArrayList 将来被弃用或过时怎么办?”如果确实发生这种情况,我们将不得不重写或修改整个源代码。所以他们称之为Bad Design。我怎样才能避免这种情况?我应该创建一个实现 List 的接口OurList 并将其实现为OurArrayList,这将是我们将要使用的吗?请解释如何正确完成。假设我希望能够使用 ArrayList 的iterate 方法。在不影响项目代码可维护性的情况下,最好的方法是什么?

【问题讨论】:

  • 一种解决方案是使用“组合而不是继承”。为什么需要 ArrayList 的所有方法?我认为如果 ArrayList 真的被弃用了,你会有更大的问题
  • 如果?如果 Java 在未来被弃用怎么办?我当然是在开玩笑,但弃用并不是你必须开始担心 Java 的事情。曾经使用 java.util.Vector 代替 java.util.List。当然它不再使用,但被弃用,我认为不会!但是,就设计而言,以这种方式继承是一个糟糕的设计。您可能希望在名为CustomList 的新类中使用 数组列表。这称为委托
  • 我在 oop 上提出了更具体的问题。这不仅仅是关于 ArrayList
  • 为什么需要自定义实现 List?

标签: java oop


【解决方案1】:

你太担心了,ArrayList 很可能不会很快被弃用。

即使已弃用,也不要将其视为您的代码将被破坏的承诺。

您可能听说过“自嘲式幽默”这个词,或将说话者的重要性降到最低的幽默

不推荐使用的类或方法就是这样。 不再重要。事实上,它是如此不重要,以至于您不应该再使用它,因为它已被取代并且可能将来会不复存在。

如果您的担忧源于过时,您应该更多地关注需求和满足需求。事情变得过时,这是不可避免的,不要让它困扰你。 ArrayList 被弃用不必担心,除非它因严重问题而被弃用。

您是否担心Thread 被弃用? Vector 在被弃用之前一直很受欢迎。您仍然会看到它,因为它没有被移除以允许源向后兼容。

如果您将时间花在修改代码上主要是为了“跟上潮流”,而不是将时间花在当前的问题上,那么您将浪费时间。担心 ArrayList 被弃用可能会分散您对项目可能存在的其他潜在问题的注意力。

【讨论】:

    【解决方案2】:

    我几乎可以肯定 ArrayList 永远不会被弃用。它使用得太广泛了。但是,如果您确定要这样做,请使用 CustomList 实现 List

    【讨论】:

    • 然后呢?我创建了实现 CustomList 的“自己的”ArrayList?
    • 这仍然需要实现所有方法的主体,这可能不适合维护
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多