Наразі я переробляю частину великої бази кодів, не маючи тестування. Я спробував перефактурувати код грубим способом, тобто намагаючись відгадати, що робить код і які зміни не змінять його значення, але без успіху: він випадковим чином розбиває функції по всій базі коду.
Зауважте, що рефакторинг включає переміщення застарілого коду C # у більш функціональний стиль (застарілий код не використовує жодної з функцій .NET Framework 3 і пізніших версій, включаючи LINQ), додаючи генеричні файли, де код може отримати користь від них тощо.
Я не можу використовувати формальні методи , враховуючи, скільки вони коштують.
З іншого боку, я припускаю, що принаймні "будь-який реконструйований застарілий код має бути випробуваними з одиницею", слід суворо дотримуватися, незалежно від того, скільки це коштувало б. Проблема полягає в тому, що коли я переробляю крихітну частину приватного методу 500 LOC, додавання одиничних тестів виявляється важким завданням.
Що може допомогти мені дізнатись, які одиничні тести є актуальними для даного фрагмента коду? Я здогадуюсь, що статичний аналіз коду якимось чином був би корисним, але які інструменти та методи я можу використовувати:
Точно знати, які одиничні тести я повинен створити,
І / чи знаєте, чи вплинула на зміна оригінального коду зміна, яку він виконував інакше?
formal methods in software development
його, оскільки він використовується для доведення правильності програми за допомогою логіки предикатів і не буде застосований до рефакторингу великої бази даних коду. Формальні методи, які зазвичай використовуються для доказування коду, працюють правильно в таких областях, як медичне застосування. Ви маєте рацію зробити це дорого, тому його не використовують часто.