Это как быть брошенным в глубокий конец и как-то вырастить жабры.

Я закончил 4 недели в Viking Code School. За это время мы рассмотрели основы Ruby, алгоритмы и структуры данных, веб-приложения, созданные с помощью Sinatra и Rails, и SQL-запросы. Мы работали вместе и по отдельности над разными заданиями, и даже у нас был мини-хакатон, где нам нужно было в течение дня придумывать и строить проекты с использованием Star Wars API.

Наряду с новыми техническими знаниями приходит усовершенствование моей существующей техники. Я ловлю себя на том, что смотрю на код, над которым усердно работал и которым гордился всего месяц назад, и меня съеживает ныне очевидная неуклюжесть и избыточность. Я ловлю себя на мысли о крайних случаях, которые никогда не приходили мне в голову, и о том, как правильно их учитывать.

В качестве небольшого примера приведу фрагмент кода, который я написал при подготовке к программе:

def is_palindrome(number)
  if number.to_s == number.to_s.reverse
    return true
  else
    return false
  end
end

В то время мне это казалось достаточно хорошим, и оно действительно работает, но его можно было бы написать гораздо более аккуратно. Во-первых, теперь я знаю, что методы, которые возвращают подобные логические значения, обычно определяются со знаком вопроса в конце их имен. Во-вторых, поскольку я тестирую сравнение, которое в любом случае вернет true или false, я могу просто вернуть его напрямую без громоздкого оператора if. Теперь, если бы я хотел решить эту проблему таким же образом, я бы написал:

def is_palindrome?(number)
  number.to_s == number.to_s.reverse
end

Это всего лишь одно небольшое улучшение. Я обнаружил, что просматриваю код, написанный для предыдущих проектов, и пытаюсь найти способ его рефакторинга. Я до сих пор впечатлен тем, как сильно изменился месяц.

В наши дни, даже когда я просматриваю Интернет в поисках чего-то совершенно не относящегося к делу, какая-то часть моего мозга вырабатывает лучший способ воспроизвести сайт, который я посещаю. Например, если я проверяю Facebook, я думаю о своей сети друзей и обо всем контенте, который они создают, и представляю, как я буду хранить эти данные и делать их доступными. Я смотрю на исходный код веб-сайта, которым пользуюсь, и наблюдаю, как они его структурировали, и пытаюсь найти общие приемы, которые было бы полезно запомнить. Это только начало большого пути, но я уверен, что я на правильном пути.