Мне очень нравится этот оператор, но читатель должен быть принят во внимание.
Вы всегда должны уравновешивать компактность кода со временем, потраченным на его чтение, и в этом есть некоторые довольно серьезные недостатки.
Прежде всего, это дело Первоначального Аскера. Он просто час писал об этом и читал ответы. Сколько времени понадобилось бы автору, чтобы написать каждый? Как если бы / то на протяжении всей его жизни. Не час, чтобы быть уверенным.
Во-вторых, в C-подобных языках вы привыкли просто знать, что условные выражения - это первое, что есть в строке. Я заметил это, когда использовал Ruby и наткнулся на такие строки:
callMethodWhatever(Long + Expression + with + syntax) if conditional
Если бы я долгое время был пользователем Ruby, у меня, вероятно, не было бы проблемы с этой строкой, но, если исходить из C, когда вы видите в качестве первой в строке «callMethodWhwhat», вы ожидаете, что она будет выполнена. ?: Менее загадочный, но все же достаточно необычный, чтобы отбросить читателя.
Преимущество, однако, в том, что вы можете написать 3-строчный оператор if в интервале 1 из строк. Не могу этого отрицать :) Но, честно говоря, не обязательно более читабельно 90% людей там просто из-за его редкости.
Когда это действительно присвоение, основанное на логических значениях и значениях, у меня нет проблем с ним, но им легко злоупотреблять.