Рефакторинг очень комбинированного кода - PullRequest
1 голос
/ 19 марта 2009

Теперь мне нужно провести рефакторинг некоторого кода, это в основном один метод (его около 1000 строк кода), который выполняет много вычислений и имеет много переменных. Я не уверен, как это сделать. Код как

...
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()) 

только затруднит чтение.

1 Ответ

6 голосов
/ 19 марта 2009

Я бы потратил все необходимое время, чтобы убедиться, что я понимаю, что на самом деле делает алгоритм. Затем я попытался бы выяснить, как бы я действительно решил проблему, если бы мог выбрать, что, вероятно, включало бы ряд классов и концепций. Затем я попытался бы внедрить эти концепции один за другим в существующий код, убедившись в том, чтобы получить надлежащее тестовое покрытие для каждой концепции, как я ее представляю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...