В прошлую пятницу мы (я и моя группа) завершили первый модуль в школе Флэтайрон. Flatiron School — это учебный лагерь, который я посещаю для разработки программного обеспечения. Программа разбита на 5–3-недельные сессии, на каждой из которых есть «вызов кода» и проект.
Для первого модуля — проект должен был создать CLI (некоторые говорят «глупый» 🤷🏻♀️) на Ruby с партнером. Мы с моим партнером Мартином создали приложение под названием «Спасательный плот», призванное помочь пользователю спланировать рафтинг!
Одним из недостатков приложений CLI является простота взаимодействия с пользователем. Использование только gets.prompt в Ruby не обеспечивает большой гибкости. К счастью, участник предыдущей когорты (Cat) написал сообщение в блоге с различными методами, чтобы сделать интерфейс командной строки более удобным и эстетичным. Если вы ищете какие-то изящные жемчужины, чтобы добавить дополнительные *oompf* в приложение CLI, проверьте это!
В то время как блог Кэт был очень полезен для внешнего интерфейса, нам еще предстояло многое сделать для внутреннего интерфейса нашего приложения. Мы использовали TTY::Prompt не только для улучшения взаимодействия с пользователем, но и для ограничения того, насколько легко взломать наш код. Это привело к созданию множества утверждений «если».
Одним из способов, которым я разъяснял наш внутренний код, было использование операторов «case» вместо операторов «if».
Но даже если это работает, это не самый гибкий и чистый способ сделать это.
Поэтому вместо этого я написал общее заявление!
Здесь есть два варианта
- «НАЗАД!» (наша кнопка назад)
- trip.name (каждый объект поездки имеет имя, хранящееся в виде строки, которая отображается в массив и передается в нашу подсказку выбора)
На этот раз, вместо жесткого кодирования всех названий выбираемых рек, я написал более гибкое выражение. Когда выбрано что-либо, кроме «backpaddle», мы ищем во всех поездках объект поездки и вызываем его имя (поскольку оператор when должен совпадать с выбранной строкой).
Затем я назвал новую переменную «current_trip», которая соответствует объекту выбора поездки, найденному выше. Это позволяет нам вызывать целый ряд отличных активных команд записи! Таким образом, отображаемая информация для нашего пользователя о поездке будет выглядеть так:
К сожалению, у нас не хватило времени, и мы не смогли провести рефакторинг наших первоначальных методов.
Поэтому вместо этого я просто добавлю его в свой список вещей, которые я мог бы сделать, чтобы улучшить свой код. 😊 Другие способы, которыми я мог бы улучшить свой код (и хотелось бы, чтобы у меня было время):
- Рефакторинг кода еще больше, чтобы сделать его менее «вонючим».
- Создайте новую таблицу «Избранное», чтобы мы могли сохранить много поездок для многих пользователей.
- Добавьте больше забавных методов, таких как просмотр поездок по быстрому уровню, цене и минимальному возрасту.
Другие важные уроки, которые я усвоил:
- Никогда, НИКОГДА не удаляйте файл переноса
- Спланируйте свои таблицы и данные, прежде чем приступать к программированию.
Но это темы для другого дня…
Проверьте наш код для спасательного плота ниже! Для него даже есть отличное вступительное видео!