Teaching Code Refactoring Using LLMs
2508.09332v1
cs.SE, cs.LG
2025-08-15
Авторы:
Anshul Khairnar, Aarya Rajoju, Edward F. Gehringer
Резюме на русском
------------------------------------------------
## Контекст
Код с высоким качеством является ключевым фактором успешного программного проекта. Одн из наиболее важных задач в области обслуживания кода — **refactoring**. Это процесс улучшения структуры кода без изменения его внешних функциональных возможностей. Однако refactoring трудно научить студентов, особенно когда речь идет о сложных реальных кодовых базах. Обычно в курсах используются методы, такие как коды ревью и статический анализ, но они предоставляют ограниченный и непоследовательный фидбэк.
Наши дней много Large Language Models (LLMs), способных обрабатывать текст на высоком уровне. Мы предлагаем интегрировать LLM-помощь в процесс обучения refactoring. Такие модели могут предоставить более контекстуальную и реального времени помощь студентам. Мы хотим показать, что это подход может помочь студентам лучше понять refactoring и его важность для поддержания качества кода в реальной жизни.
------------------------------------------------
## Метод
Этот подход реализуется в рамках курса программирования, где студенты работают над реальным проектом с открытым исходным кодом. Мы используем LLM для анализа кода и поиска "code smells" — знаковых признаков неэффективной или неподдерживаемой архитектуры.
LLM предлагает студентам улучшенные версии кода с помощью структурированных подсказок. Мы структурируем задачи таким образом, чтобы студенты не только исправляли код, но и понимали причины таких изменений. Эта процедура помогает студентам усвоить теоретические принципы refactoring на практических примерах.
------------------------------------------------
## Результаты
Мы провели эксперимент, в котором студенты в ходе курса работали над задачами refactoring, получая помощь от LLM. Мы сравнивали их результаты с теми, когда студенты работали без таковой помощи.
Результаты показали, что студенты, получившие помощь от LLM, были более уверенными в своих действиях и смогли выполнить задачи refactoring более эффективно. Мы также выявили что LLM могут более точно определять "code smells" и предлагать более эффективные решения.
------------------------------------------------
## Значимость
Наш подход имеет много областей применения. Он может использоваться в обучении кода, создании инструментов для код ревью, а также в нейронных сетях для анализа и улучшения кода.
Преимущества LLM-подхода включают в себя реакцию в реальном времени, контекстуальную помощь и объективность в оценках. Это может дополнительно повысить качество обучения, обеспечить понимание refactoring и привлечь студентов к лучшим практикам в программировании.
------------------------------------------------
## Выводы
Наши эксперименты показали, что LLM могут быть эффективным инструментом для обучения refactoring. Они могут помочь студентам понять теоретические подходы и применить их на практике.
Будущи
Abstract
This Innovative Practice full paper explores how Large Language Models (LLMs)
can enhance the teaching of code refactoring in software engineering courses
through real-time, context-aware feedback. Refactoring improves code quality
but is difficult to teach, especially with complex, real-world codebases.
Traditional methods like code reviews and static analysis tools offer limited,
inconsistent feedback. Our approach integrates LLM-assisted refactoring into a
course project using structured prompts to help students identify and address
code smells such as long methods and low cohesion. Implemented in Spring 2025
in a long-lived OSS project, the intervention is evaluated through student
feedback and planned analysis of code quality improvements. Findings suggest
that LLMs can bridge theoretical and practical learning, supporting a deeper
understanding of maintainability and refactoring principles.
Ссылки и действия
Дополнительные ресурсы: