Лично я думаю, что else
не нужны. Поскольку этот вопрос помечен как [language-agnostic]
, я приведу несколько примеров того, как я бы написал:
def temperature_message(temp)
return 'Freezing' if temp < 32
return 'Brr' if temp < 60
return 'Comfortable' if temp < 80
'Too hot'
end
Это типичный стиль охранной оговорки, которым я и сообщество Ruby в целом пользуюсь довольно часто.
def temperature_message(temp)
case
when temp < 32
'Freezing'
when temp < 60
'Brr'
when temp < 80
'Comfortable'
else
'Too hot'
end
end
Это типичный switch
, как вы могли бы найти его в некоторых менее мощных языках. Это, вероятно, тот, который я не использовал бы, я бы реорганизовал его так:
def temperature_message(temp)
case temp
when (-1.0/0.0)...32
'Freezing'
when 32...60
'Brr'
when 60...80
'Comfortable'
else
'Too hot'
end
end
Хотя я должен признать, что мне все еще легче читать первое.
Поскольку это в основном таблица сопоставления, я бы попытался отформатировать ее так, чтобы каждый, кто читает код, сразу увидел «таблицу»:
def temperature_message(temp)
case temp
when (-1.0/0.0)...32 then 'Freezing'
when 32...60 then 'Brr'
when 60...80 then 'Comfortable'
else 'Too hot'
end
end
Это также относится к вашей исходной реализации Java:
public String getTemperatureMessage(double temp) {
if(temp < 32) return "Freezing";
if(temp < 60) return "Brr";
if(temp < 80) return "Comfortable";
else return "Too hot";
}
Конечно, поскольку является в основном таблицей сопоставления, вы также можете реализовать его как карту:
def temperature_message(temp)
{
(-1.0/0.0)...32 => 'Freezing',
32...60 => 'Brr',
60...80 => 'Comfortable',
80..(1.0/0.0) => 'Too hot'
}.detect {|range, _| range.include?(temp) }.last
end