Для подавляющего большинства кода, не чувствительного к производительности, есть много веских причин, по которым вы хотите использовать сопоставление с образцом, если / else:
- обеспечивает принудительноеобщее возвращаемое значение и тип для каждой из ваших ветвей
- в языках с проверками на исчерпывающую полноту (например, Scala), вынуждает вас явно рассматривать все случаи (и сводить на нет те, которые вам не нужны)
- он предотвращает ранние возвраты, которые становится труднее рассуждать, если они каскадно растут в числе или ветви становятся длиннее, чем высота экрана (в этот момент они становятся невидимыми).Наличие дополнительного уровня отступа предупредит вас о том, что вы находитесь внутри области.
- это может помочь вам определить логику для выхода.В этом случае код можно было бы переписать и сделать более СУХИМЫМ, отлаживаемым и тестируемым, например:
val errorMessage = user.password == enteredPassword match {
case true => "User is authenticated"
case false => "Entered password is invalid"
}
println(errorMesssage)
Вот эквивалентная реализация блока if / else:
var errorMessage = ""
if(user.password == enteredPassword)
errorMessage = "User is authenticated"
else
errorMessage = "Entered password is invalid"
println(errorMessage)
Да, вы можете утверждать, что для такой простой вещи, как логическая проверка, вы можете использовать выражение if.Но это не имеет отношения к делу и не подходит для условий с более чем двумя ветвями.
Если вас больше беспокоит удобство обслуживания или читаемость, сопоставление с образцом - это круто, и вы должны использовать его даже для незначительных вещей!