Как собрать мысли в кучу при большом рефакторинге?
Всем привет.
Мне по работе досталась задача по рефакторингу ядра расчета одного инструмента. Ядро делалось в спешке другим разработчиком, поэтому нет, ни unit тестов, ни точек расширения алгоритма, ни документации, благо есть разработчик, который это делал и по логике у него консультируюсь.
Алгоритм ядра довольно большой и мне трудно рассматривать его целиком. Я разбил на несколько логических кусков и работаю с каждым отдельно, при этом пытаюсь применять TDD: реализуя какой-то кусок логики, задаюсь вопросом: "Как я это буду тестировать?"
В чем вопрос? Все эти действия даются мне сложно. У меня нет уверенности в своих действиях. Есть ли какие-либо ресурсы: статьи или книги, которые помогут быть более уверенным в составлению требований к коду, выраженных в unit тестах и организации проектирования сложных процессов расчета, включающих много if/else.
Старших, у которых я мог бы проконсультироваться по этому вопросу нет (я пытался), коллеги это, либо чистые sql-щики, либо только прибывшие студенты с малым опытом. Сам я программирую только 1,5 года и опыта в подобном нет.
Наличие тестов в разы упрощает рефакторинг, лишних ветвлений логики старайтесь избегать, разбивайте на разные методы, старайтесь не допускать рост кода вправо. Не делайте сильную вложенность, ветви в цикле и подобное. https://www.sonarsource.com/docs/CognitiveComplexi...
Вам надо прочитать про solid
Тут могу посоветовать пока только Фаулера и его книгу про рефакторинг ссылка.
Есть еще одна книга по работе с унаследованным кодом ссылка, но перевод ее настолько ужасен, что как бы и не советую, но те кто читал ее в оригинале, говорят что очень хороша!
Я считаю, что никакими советами и статьями здесь не обойдешься, надо читать.
Читай, иначе обречен на неудачу!