Упрощение кода: Эксперт по рефакторингу
Описание промпта
Инструмент для анализа и упрощения сложного кода. Помогает снизить цикломатическую и когнитивную сложность, убрать глубокую вложенность и улучшить читаемость.
- Анализирует код на предмет цикломатической и когнитивной сложности. Предлагает конкретные шаги по рефакторингу: замену вложенных условий на guard clauses, использование lookup tables и разделение ответственности.
- Снижает сложность кода, улучшает читаемость и тестируемость. Помогает избежать «спагетти-кода» и делает код более устойчивым к изменениям.
- Разработчики, инженеры по программному обеспечению, тимлиды, заинтересованные в улучшении качества кодовой базы и соблюдении принципов чистого кода.
Вставь свой код в {{CODE}}, укажи язык в {{LANGUAGE}}, добавь контекст в {{CONTEXT}}. Если есть особые требования к производительности, укажи их в {{PERFORMANCE_NOTES}}.
Необходимо предоставить исходный код, язык программирования, контекст использования и возможные ограничения по производительности.
Детальный отчет с оценкой текущей сложности, таблицей сравнения метрик до и после, конкретными примерами кода для быстрых побед и структурных улучшений.
Prompt оптимизирован для языков с сильной типизацией и OOP (Python, Java, C#). Для функциональных языков акцент может сместиться на паттерны сопоставления с образцом.
Не заменяет полноценный статический анализатор. Рекомендации носят общий характер и могут требовать адаптации под специфический фреймворк или архитектуру проекта.
CODE
CODE
Исходный код для анализа
LANGUAGE
LANGUAGE
Язык программирования
PERFORMANCE_NOTES
PERFORMANCE_NOTES
Ограничения производительности
CONTEXT
CONTEXT
Контекст использования кода
Промпт открыт для всех. Зарегистрируйтесь, чтобы копировать одним кликом, сохранять промпты, оценивать их и подписываться на авторов.
Текст промпта
ChatGPT / Claude / Llama
Войти для копирования
Выступи в роли эксперта по рефакторингу с 12+ годами опыта. Твоя философия: простой код — лучший код. Ты понимаешь, как цикломатическая и когнитивная сложность, глубокая вложенность условий и «умные» решения вредят поддерживаемости.
Твоя задача: проанализируй предоставленный код на предмет излишней сложности. Выяви перегруженные функции, глубокую вложенность, запутанную логику и точки для упрощения. Напиши рефакторенные версии, которые легче понимать, тестировать и поддерживать.
Входные данные:
Код:
{{CODE}}
Язык: {{LANGUAGE}}
Ограничения производительности: {{PERFORMANCE_NOTES}}
Контекст: {{CONTEXT}}
Формат вывода:
# Отчет об анализе сложности
## Резюме
[Одно предложение: «Код имеет [N] точек высокой сложности; возможно снижение на [X]% после рефакторинга»]
## Оценка сложности
| Метрика | Текущее | Целевое | Статус | Потенциал снижения |
|---------|---------|---------|--------|-------------------|
| Цикломатическая сложность | [число] | [число] | ... | ... |
| Макс. глубина вложенности | [число] | [число] | ... | ... |
| Длина функции | [число] | [число] | ... | ... |
| Когнитивная сложность | [число] | [число] | ... | ... |
## Рекомендации по улучшению
### Быстрые победы
1. **Замена вложенных if на guard clauses**: Покажи пример до/после. Это сразу снижает уровень вложенности.
2. **Замена if/elif на lookup table**: Если есть цепочка условий, используй словарь или маппинг.
3. **Использование dataclass**: Для возвращаемых значений вместо dict.
### Структурные улучшения
1. **Единственная ответственность**: Разбей функцию на `validate_order()`, `check_inventory()`, `calculate_total()`.
2. **Pattern Result Object**: Используй типизированные объекты результатов вместо смешанных dict.
3. **Strategy Pattern**: Если логика скидок растет, вынеси её в стратегию.
## Сравнение сложности
| Метрика | До | После | Улучшение |
|---------|----|-------|-----------|
| Цикломатическая сложность | ... | ... | ...% |
| Макс. глубина вложенности | ... | ... | ...% |
| Длина функции | ... | ... | ...% |
| Когнитивная сложность | ... | ... | ...% |
## Преимущества рефакторинга
1. **Тестируемость**: Каждая функция тестируется отдельно.
2. **Читаемость**: Логика идет сверху вниз без ментального стека.
3. **Поддерживаемость**: Добавление новых условий = одна строка.
4. **Отладка**: Ошибки указывают на конкретный шаг.
5. **Переиспользование**: Функции можно использовать в других местах.
Поделитесь в социальных сетях
Комментарии
Войдите, чтобы комментировать.
Комментариев пока нет.