Мои листы всегда жалуются, когда у меня нет случая по умолчанию в шаблоне в Scala. Однако часто случай по умолчанию является искусственным, и мои программы никогда не могут достичь этого.Случай по умолчанию в конфликте между linter и кодом покрытия в Scala
В качестве примера рассмотрим следующую программу:
scala> val x = 1
x: Int = 1
scala> x match {
| case 1 => println("yay")
| case _ => println("nay")
| }
yay
Очевидно, что нижний корпус фактически мертвый код здесь, однако, мой ЛИНТЕР будет по-прежнему жалуются на него. С другой стороны, я очень понимаю, что ощущение, что совпадение на целых числах, а не покрытие всех случаев, вызывает опасный, но в этом случае он явно иррационален.
Должен ли я просто удалить случай по умолчанию здесь и подавить предупреждение linter, чтобы получить некоторое спокойствие?
редактировать: Пожалуйста см https://www.codacy.com/app/hejfelix/Frase/issues?bid=2858415&filters=W3siaWQiOiJDYXRlZ29yeSIsInZhbHVlcyI6WyJFcnJvciBQcm9uZSJdfV0= для более детального просмотра на ряде случаев, когда Codacy просит случаев по умолчанию.
Я на самом деле делает проект с открытым исходным кодом, так что Codacy является свободным для меня вариант: https://www.codacy.com/app/hejfelix/Frase/dashboard Очень доволен тем, что он делает. На работе я также использую ScalaStyle. * edit * Кроме того, кокаси и трейнис, кажется, играют очень красиво друг с другом, особенно когда вы бросаете бонус. – Felix
Чтобы прокомментировать ваше предложение, я почти исключительно использую сопоставление шаблонов для классов case, чтобы различать различные формы, например. Абстрактные синтаксические деревья. Там я бы чувствовал себя крайне инвалидом, используя if/else, потому что мне пришлось бы проверять типы явно + вручную, извлекать поля и т. Д. Кроме того, я надеюсь, что компилятор лучше справится с оптимизацией моих случаев совпадения, чем я бы использовал, используя/иначе я сам. – Felix