Language agnostic 重构非常复杂的代码
我现在必须重构一些代码,这基本上是一种方法(大约1000行代码),它进行了大量计算,并且有很多变量。我不知道如何重构它。 代码像什么Language agnostic 重构非常复杂的代码,language-agnostic,refactoring,Language Agnostic,Refactoring,我现在必须重构一些代码,这基本上是一种方法(大约1000行代码),它进行了大量计算,并且有很多变量。我不知道如何重构它。 代码像什么 ... calculateSth(param1,param2,param3,param4,param5, params6); calculateSthElse(param1,param2,param3); ... 好看吗 我可以引入参数对象,但这些对象只能用作某些方法的参数,所以看起来是这样的 ... calculateSth(calculateSthObjec
...
calculateSth(param1,param2,param3,param4,param5, params6);
calculateSthElse(param1,param2,param3);
...
好看吗
我可以引入参数对象,但这些对象只能用作某些方法的参数,所以看起来是这样的
...
calculateSth(calculateSthObject);
calculateSthElse(calculateSthElseObject);
...
或者我可以把所有的东西都放在一个大物体里
...
calculateSth(calculateObject);
calculateSthElse(calculateObject);
...
然而,在这个解决方案中,我必须在方法开始时提取私有方法中所需的所有内容,并在最后设置,并且要找出私有方法中使用的值将非常困难。大约一半的变量需要作为输出
你会怎么做
p.S.计算并非微不足道,因此
calculateObject.setMagicValue4((calculateObject.getMagicValue() * calculateObject.getMagicValue2() / calculateObject.getMagicValue3())
这只会使它很难阅读。我会花任何必要的时间来确保我了解算法的实际功能。然后,如果我可以选择的话,我会尝试找出如何真正解决这个问题,这可能涉及到许多类和概念。然后,我会尝试将这些概念一个接一个地介绍到现有代码中,确保在介绍每个概念的过程中获得适当的测试覆盖率。我会花费任何必要的时间来确保我了解算法的实际功能。然后,如果我可以选择的话,我会尝试找出如何真正解决这个问题,这可能涉及到许多类和概念。然后,我会尝试将这些概念一个接一个地介绍到现有代码中,确保在介绍每个概念时获得适当的测试覆盖率