В прошлую пятницу мы (я и моя группа) завершили первый модуль в школе Флэтайрон. Flatiron School — это учебный лагерь, который я посещаю для разработки программного обеспечения. Программа разбита на 5–3-недельные сессии, на каждой из которых есть «вызов кода» и проект.

Для первого модуля — проект должен был создать CLI (некоторые говорят «глупый» 🤷🏻‍♀️) на Ruby с партнером. Мы с моим партнером Мартином создали приложение под названием «Спасательный плот», призванное помочь пользователю спланировать рафтинг!

Одним из недостатков приложений CLI является простота взаимодействия с пользователем. Использование только gets.prompt в Ruby не обеспечивает большой гибкости. К счастью, участник предыдущей когорты (Cat) написал сообщение в блоге с различными методами, чтобы сделать интерфейс командной строки более удобным и эстетичным. Если вы ищете какие-то изящные жемчужины, чтобы добавить дополнительные *oompf* в приложение CLI, проверьте это!



В то время как блог Кэт был очень полезен для внешнего интерфейса, нам еще предстояло многое сделать для внутреннего интерфейса нашего приложения. Мы использовали TTY::Prompt не только для улучшения взаимодействия с пользователем, но и для ограничения того, насколько легко взломать наш код. Это привело к созданию множества утверждений «если».

Одним из способов, которым я разъяснял наш внутренний код, было использование операторов «case» вместо операторов «if».

Но даже если это работает, это не самый гибкий и чистый способ сделать это.

Поэтому вместо этого я написал общее заявление!

Здесь есть два варианта

  1. «НАЗАД!» (наша кнопка назад)
  2. trip.name (каждый объект поездки имеет имя, хранящееся в виде строки, которая отображается в массив и передается в нашу подсказку выбора)

На этот раз, вместо жесткого кодирования всех названий выбираемых рек, я написал более гибкое выражение. Когда выбрано что-либо, кроме «backpaddle», мы ищем во всех поездках объект поездки и вызываем его имя (поскольку оператор when должен совпадать с выбранной строкой).

Затем я назвал новую переменную «current_trip», которая соответствует объекту выбора поездки, найденному выше. Это позволяет нам вызывать целый ряд отличных активных команд записи! Таким образом, отображаемая информация для нашего пользователя о поездке будет выглядеть так:

К сожалению, у нас не хватило времени, и мы не смогли провести рефакторинг наших первоначальных методов.

Поэтому вместо этого я просто добавлю его в свой список вещей, которые я мог бы сделать, чтобы улучшить свой код. 😊 Другие способы, которыми я мог бы улучшить свой код (и хотелось бы, чтобы у меня было время):

  1. Рефакторинг кода еще больше, чтобы сделать его менее «вонючим».
  2. Создайте новую таблицу «Избранное», чтобы мы могли сохранить много поездок для многих пользователей.
  3. Добавьте больше забавных методов, таких как просмотр поездок по быстрому уровню, цене и минимальному возрасту.

Другие важные уроки, которые я усвоил:

  1. Никогда, НИКОГДА не удаляйте файл переноса
  2. Спланируйте свои таблицы и данные, прежде чем приступать к программированию.

Но это темы для другого дня…

Проверьте наш код для спасательного плота ниже! Для него даже есть отличное вступительное видео!