Ну, что касается читабельности, я бы сказал, что второе не может быть более ясным. Например, ваш общий случай случается ПОСЛЕ ваших особых случаев.
Однако реальная проблема, которую я вижу здесь, состоит в том, что два фрагмента кода на самом деле не эквивалентны. В первом случае у вас есть шесть явных случаев. Во втором у вас есть два явных случая и один случай по умолчанию. Это означает, что, если в вашем коде есть какая-то ошибка, когда вы получаете случай, который вы не ожидали, случай по умолчанию все равно будет выполняться во втором (и task()
все равно будет выполняться). В результате это в корне отличается от вашего первого кода.
Кроме этого (решая, какой оператор switch является правильным), я бы сказал, придерживайтесь того, который лучше всего читает вам. Мне лично нравится первое (потому что оно явное и оставляет место для случая по умолчанию, если оно необходимо), но вам придется принимать решение в зависимости от ваших предпочтений или стандартов развития вашей компании / команды.