DeepSeek Код 👁 17

DeepSeek: рефакторинг легаси-функции пошагово

Промпт для безопасного пошагового рефакторинга легаси с тестами для верификации.

Промпт Запустить →
Проведи рефакторинг легаси-функции по шагам, сохранив поведение до последней ветки.

Язык и версия: [ЯЗЫК: Python 3.11]
Код (свой вставь вместо этого, пример рабочий):
[КОД: def calc(u, t, d=None): if u is not None: if t == 'new': p = 100 if d: p = p - d if u.get('vip'): p = p * 0.9 return p elif t == 'old': p = 80 if d: p = p - d if u.get('vip'): p = p * 0.9 return p return 0]
Чем покрыт: [ТЕСТЫ: тестов нет, функция вызывается из двух мест — корзина и админка]

Что нужно:
1. Что функция делает на самом деле — 3–5 строк, включая поведение на краях (u = None, d больше цены).
2. Список проблем с приоритетом: что ломает читаемость, а что реально опасно.
3. Рефакторинг шагами: ОДНО изменение за шаг, после каждого — что изменилось и почему поведение
   осталось прежним. Не больше шести шагов.
4. Финальная версия целиком.
5. Тесты, которые доказывают эквивалентность старой и новой версии, включая краевые случаи из пункта 1.

Отсечка. Не выдавай сразу «вот красивая новая версия» — без промежуточных шагов такой рефакторинг
невозможно ни проверить, ни откатить по частям. Не меняй поведение молча: если в старом коде скидка
может уронить цену ниже нуля, а в новом нет, это отдельной строкой «изменение поведения», а не тихая
правка. Не дроби на функции из одной строки и не тащи паттерны ради паттернов — стратегия и фабрика
на две ветки условия хуже, чем понятный if.

Проверка перед выдачей: прогони мысленно старую и новую версию на наборах (None, 'new', None),
({'vip': True}, 'old', 200), ({}, 'unknown', 0). Совпали результаты — выдавай, разошлись — правь.
Запустить промпт →

Пример результата

**Что делает:** парсит CSV, фильтрует по дате, считает сумму. **Проблемы:** 80 строк в одной функции, ручной парсинг CSV вместо csv-модуля, magic numbers. **Шаг 1.** Заменить ручной парсинг на `csv.DictReader` — убирает 20 строк. **Шаг 2.** Вынести фильтрацию в отдельную функцию `filter_by_date`... **Финал:** 3 функции по 10-15 строк + main. **Тесты:** `test_filter_by_date_inclusive`, `test_sum_empty_returns_zero`...

Похожие промпты

Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Сайт-визитка с 3D одним промптом — Kimi K3
Claude
Системный промпт для AI Agent ноды n8n — Claude
DeepSeek
Телеграм-бот на n8n в DeepSeek: схема нод, которую можно собрать за вечер

Полезные статьи

Мультяшные промты: 13 готовых промптов под четыре манеры
Промт чёрно-белое фото: 11 готовых промптов по своему снимку
Промт с мамой: 7 готовых промптов для фото вдвоём

Все гайды →