Прежде всего, я думаю, что это самый краткий способ проверить это конкретное состояние.
Во-вторых, для меня это запах кода, который указывает на потенциальный недостаток в вашем дизайне. Обычно ноль и ноль не должны означать одно и то же. Если возможно, вы должны попытаться исключить возможность того, что val будет равен nil, прежде чем вы попадете в этот код, либо проверив это в начале метода, либо каким-либо другим механизмом.
У вас может быть вполне законная причина сделать это, и в этом случае я думаю, что ваш код хорош, но я бы по крайней мере рассмотрел попытку избавиться от нулевой проверки, если это возможно.