1

我正在处理的遗留代码为一个类使用 21 个以数字命名的属性,用于 3 个不同的事物(我们称它们为“firstThing”、“secondThing”和“thirdThing”)。所以我的类中有 firstThing1、firstThing2、... firstThing7 属性,对于 secondThing 和 thirdThing 也是如此。

在使用该类对象的代码中的任何地方,除了使用正确的数字命名属性之外,它只是复制了 7 次的代码片段,它们都做同样的事情。不太好。

我不想改变整个画面并重新设计类,我想至少改变我正在处理的函数:使用冗余代码进行循环,将值添加到先前分配它们的特定 ArrayList 中。现在我知道是否有办法从我的 ArrayList 中获取所有这些值,并将它们分配给特定的数字命名属性?或者一种测试不同 ArrayList 的长度并将值分配给那么多属性的方法?还是我应该复制

if(listOfFirstThings.size() >= 1)
  myObject.setFirstThing1(listOfFirstThings.get(0));

if(listOfFirstThings.size() >= 2)
  myObject.setFirstThing2(listOfFirstThings.get(1));

...

21 次分配我需要的一切?

4

1 回答 1

3

重新设计课程要走的路。您实际上已经获得了三个集合——这很可能是一个集合,每个元素都有三个属性。

Java 的设计初衷并不是使用执行时生成的变量名。你可以通过反思来做到这一点,但我强烈建议你现在就正确地修复它。(实际上,在尝试添加您正在开发的任何新功能之前,我会将此作为重构步骤。)

于 2013-08-21T09:49:49.493 回答