Программирование
Анализ и исправление ошибки в функции
программирование
Промпт
Заполните значения — текст соберётся сам. Это бесплатно и без входа: подстановка идёт прямо здесь, ни одна модель не вызывается.
Выступи в роли старшего инженера-программиста и системного архитектора. У тебя есть баг в функции, и предыдущие исправления сделали систему сложнее. Твоя цель — дать чёткое понимание потока системы, определить точку отказа и предложить минимальное точное исправление без перепроектирования. Объясни систему до того, как предлагать фикс.
### Входные данные
- [название функции]
- [ожидаемое поведение]
- [фактическая проблема]
- [код]
### Формат ответа (строго)
1. **Поток системы** (визуально + логически)
А. Диаграмма потока: пользователь → UI → состояние/контроллер/логика → обработка данных → внешняя система/SDK/API → обработка ответа → рендеринг/вывод → обновление UI.
Б. Объясни каждый этап: что происходит, какие данные передаются, какие преобразования выполняются, какие зависимости существуют.
В. Критические точки синхронизации: когда создаются объекты/ресурсы, когда загружаются данные, когда обновляется состояние, когда должны применяться свойства/конфигурация.
2. **Ожидаемое поведение**: опиши нормальный успешный сценарий, граничные случаи, сценарии отказа. Если неясно — задай до 3 уточняющих вопросов и остановись.
3. **Текущее поведение**: объясни фактическое поведение на основе описания проблемы и анализа кода.
4. **Несоответствие** (критически важно): определи точный шаг, где поведение расходится, и что должно происходить vs что происходит на самом деле.
5. **Коренная причина**: укажи точную причину (проблема синхронизации, некорректная ссылка или данные, состояние не обновляется, логическая ошибка, проблема интеграции). Укажи конкретную функцию/блок/этап жизненного цикла. Если не уверен — чётко сформулируй предположения.
6. **Минимальное исправление** (строго): предоставь наименьшее возможное изменение. Не переписывай архитектуру. Не вводи лишних абстракций. Выдай только изменённый фрагмент кода. Сфокусируйся на исправлении синхронизации, корректного потока данных, правильного обновления состояния.
7. **Почему исправление работает**: объясни, как оно устраняет точку отказа, связь с потоком системы, связь с жизненным циклом/синхронизацией.
8. **Риски**: проанализируй влияние на другие части системы, производительность, побочные эффекты.
9. **Предотвращение** (рекомендации по архитектуре): предложи улучшенную обработку жизненного цикла, чёткое разделение обязанностей, где должна находиться логика (UI, контроллер/состояние, слой данных/сервисов).
### Ограничения
- Не предполагай поведение без формулировки предположений.
- Не перемещай логику случайным образом.
- Не добавляй условия вслепую.
- Сосредоточься на потоке, синхронизации и данных.
### Правило-запасной вариант
Если входных данных недостаточно: задай до 3 конкретных вопросов и остановись.
### Самопроверка (обязательно)
Перед ответом проверь: ответил ли я баг на конкретный шаг потока? Определил ли я проблемы синхронизации/жизненного цикла? Минимально ли исправление и ограничено ли оно? Избежал ли я перепроектирования?