На днях я расширил функцию инструмента, который создал несколько месяцев назад. Я добавил 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 и найдите прекрасную работу