Первое, что я заметил как новый разработчик, это горячо обсуждаемое утверждение if else. Это просто и имеет смысл - если «this» верно, сделайте это, «else» сделайте это. Это похоже на то, как я отвечаю на телефонные звонки. Если я знаю номер, который мне звонит, я отвечаю; иначе я позволю этому ребенку перейти на голосовую почту.

Конечно, этот метод можно написать несколькими способами, в зависимости от логики вашего кода:

if number.known?
  answer_the_phone
else
  voicemail
end

unless number.known?
  voicemail
else
  answer_the_phone
end

number.known? ? answer_the_phone : voicemail

Подожди ... что это за последний?

Красота (а иногда и недостаток) Ruby в том, что существует множество разных способов написать одну и ту же логику. Хотя операторы if else (и операторы except) действительно ясны и легко читаются, они не очень краткие. Когда вы копаетесь в сотнях и тысячах строк кода, выражение «если еще, если еще, если еще» может стать повторяющимся и часто ненужным, не говоря уже о том, что оно занимает много места. Мой простой пример был сжат в одну строку из пяти с использованием тернарного оператора.

Так же, как врачи придумывают неразборчивые стенограммы для того, что они все время пишут, и разработчики делают то же самое. Если вы не в курсе, «троичный» означает «состоящий из трех элементов». Три ваших элемента - это объект, над которым вы выполняете метод, что произойдет, если объект будет оценен как истинный, и что произойдет в любом другом случае.

object ? do_thing : do_other_thing

Другой пример:

kitten.cute? ? adopt_immediately : buy_swanky_collar_after_adopting_immediately

Использование тернарного оператора - это небольшая удобная уловка, которая перенесет вас из новичка в немного меньшего новичка. Я вижу, что они используются во всей кодовой базе на моей работе, и меня очень вежливо хлопнули по запястью, когда я впервые попытался использовать оператор if else в заявке, когда я мог использовать тернарный оператор. (Мой самый первый билет, но каждому может понадобиться небольшая помощь в улучшении.) Определенно существуют утверждения if else, которые существуют, но они используются для более сложных утверждений, включающих несколько if. Если у вас более трех элементов, лучше по умолчанию вернуться к выражению if.

if cat.age_in_months < 1   
  kitten
if cat.age => 10
  senior_cat
if cat.age => 1 && > 10
  adult
else  
  age_unknown
end

Не жертвуйте удобочитаемостью ради сообразительности - гораздо лучше, если кто-то сможет прочитать ваш код, чем пытаться понять, что он означает. Они с большей вероятностью подумают: «Это неприятно», чем «Это супер круто». А когда дело доходит до обмена кодом, никому не нравится, если он не знает, что вы пытаетесь сказать. Вперед!