На днях я расширил функцию инструмента, который создал несколько месяцев назад. Я добавил Completer для ожидания уникального текста при прослушивании потока. Таким образом, я хотел иметь возможность ожидать эту функцию и добавлять новые вызовы функций.
Но: После этого изменения добавленные функции не работали. Небольшая отладка и полчаса раздумий над тем, что же тут произошло, выявили, что у меня ошибка в обращении с комплекером.
Я недостаточно знаю, как работает линтер в Dart, но было бы неплохо, если бы линтер указывал на эту возможную ошибку.
Вот минимальный файл main.dart для демонстрации этой ошибки:
Запустив это приложение и нажав кнопку, вы увидите только первый отпечаток:
`флаттер: вызов waitWithCompleter()`
Функция print() после `await waitWithCompleter();` не достигнута.
Прочитав заголовок, вы легко найдете ошибку в приведенном выше коде. Ты? Если нет, читайте дальше, что отвечает ChatGPT.
Уроки, которые я извлек из своей маленькой задачи по кодированию или, по крайней мере, подтвердил еще раз
Никогда не копируйте и не вставляйте код, пока полностью не поймете, что происходит.
Я скопировал несколько строк из собственного кода, но контекст немного отличался, и в другом случае отрыв был правильным.
Тестируйте после каждого маленького шага, а не после большого количества изменений
Я изменил несколько мест, поэтому не было очевидно, какое изменение вызвало ошибку. Вот небольшая аналогия:
Как безопаснее всего действовать, если вам нужно пересечь неизвестный производственный цех в полной темноте без каких-либо средств поддержки?
Я предлагаю делать самые маленькие шаги и проверять на каждом шагу, нет ли пропасти или препятствия на пути.
Кодируйте каждый день, хотя бы по чуть-чуть
Кодируйте, делайте ошибки, находите причину и исправьте ошибку.
Так растет опыт.
Время от времени создавайте крошечное приложение Flutter
После Shifp+CMD+P
и Flutter: New Project
впервые увидел эту Application(empty)
. Я всегда удалял комментарии и большую часть кода в созданном стандартном приложении. Кажется, это пришло с версией 3.7.0.
ChatGPT кажется лучше, чем расширение Code GPT для VS Code
Я прочитал о Code GPT extension
в этой средней статье:
Я установил его и выбрал функцию waitWithCompleter(). Затем я нажал пункт Find problems CodeGPT
в контекстном меню.
Ответ был:
Future waitWithFuture() async {
return Future.delayed(Duration(microseconds: 1000));
}
// The first function will never complete. The completer is never completed. The second function is correct.
Ну, ответ правильный, но ChatGPT ответил гораздо лучшим решением для этой подсказки: What is the error in the following function?
The error in the code is that the complete method is not being invoked. It should be called as completer.complete().
Удивительно: спустя несколько часов после того, как я спросил ChatGPT, я получил гораздо лучший ответ от CodeGPT в VS Code. Действительно ли OpenAI так быстро учится на наших подсказках? Или время от времени ответы разные?
Крошечные проекты идеально подходят для опробования новых инструментов
Из твита @Banjoe__ я узнал о новом флаттер-инструменте flutter-architect.web.app. Мое минимальное приложение было первым, когда я его использовал, и приятно добавить кнопку в код с помощью щелчка и CMD+V
. Также возможны сложные вложенные деревья виджетов.
Я добавил PWA как Chrome-приложение и буду дальше экспериментировать с ним. Это выглядит так:
Заключение
Одна из самых интересных задач в разработке программного обеспечения — обработка ошибок — по крайней мере, для меня.
- В нем есть что-то от детективной работы, например, сбор улик, внимательное наблюдение и сосредоточение внимания на деталях.
- Иногда необходимо придумать эксперименты, чтобы добраться до первопричины. Может быть интересно предсказать, чем закончится эксперимент. Сравниваю иногда с игрой Мастермайнд, где нужно узнать цвет четырех колышек.
- Вы увидите значительное улучшение, если сравните приложение до и после исправления.
- Каждая ошибка дает урок для изучения. Если это опечатка или глупая ошибка, это отзыв о том, насколько вы сосредоточены. Если это интересная ошибка, вы узнаете что-то новое о своей области, фреймворке или языке.
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу