June 1st, 2020

404

О рефакторинге на расте

В рефакторинге часто бывает момент, когда надо "подвигать строки". Слить две функции вместе, или распилить их на две части. Когда рефакторинг обдумывается, это мыслительный акт, в котором есть творческая составляющая, эстетика и сложные размышления. Но когда уже начинаешь процесс, это тупой грайнд, стыковка кусков пока "не заработает". Мелкие изменения имён переменных, место где они декларируются (если мы режим функцию на две - в первой или во второй) и т.д.

Если тестов нет, то этот грайнд превращается в ад (потому что вылазят странные проблемы, не всегда на первом запуске). Если тесты есть, то это тыц-тыц-тыц. Не падают тесты, значит, хорошо.

... Но на расте это совершенно другой уровень тыц-тыц-тыц. Куда мне этот let перенести? Можно сюда? Вроде, можно. А на уровень выше? Можно. А ещё выше? Фигак, нельзя, borrow-бла-бла-lifetime, вернул на место.

zero thinking required. Тыкать строчки пока не скомпилится. Скомпилировалсь? Работает.

Я, утрирую, конечно, но вот это ощущение тыц-тыц-влезло-значит-хорошо очень сильное. И это приятно, особенно, в свете того, что никаких тестов там (в штуке, которую я рефакторю) нету.