Должен ли скобка всегда быть размещена вокруг Тернарного оператора?

StackOverflow https://stackoverflow.com/questions/3620762

  •  26-09-2019
  •  | 
  •  

Вопрос

CheckStyle жалуется на следующее:

return (null == a ? a : new A());

И говорит, что ограды не нужны.

Хотя утверждение, безусловно, работает нормально без них, это кажется гораздо более читаемым с ними, - иначе, как я читаю это, я склонен видеть:

return null

сначала, а затем придется пауза, чтобы рассмотреть оставшиеся

== a ? a : new A(); 

Часть, так как мой мозг уже ушел по одному пути.

Кроме того, я склонен делать то же самое в любое время Я вижу тройного оператора, если только он не сгруппирован в Parens.

Так что: следует ли поручить вокруг тройника быть де-факто стандартом? Есть ли когда-либо причина, чтобы не поставить их там?

Это было полезно?

Решение

Ну, CheckStyle справа, скобки бесполезны для выполнения. Но бесполезно для казни не означает бесполезное для хорошего чтения вашего кода. Вы должны оставить их, если это имеет больше смысла читать.

Я думаю, что этот код не нуждается в скобках:

int number = (myBoolean)? 1 : 2;

но в вашем случае return Ключевое слово и тот факт, что ваш логический язык - это выражение может изменить то, как вы прочитаете утверждение.

Другие советы

При чтении оператора возврата я знаю, что все между «возвращением» и «;» Это то, что будет возвращено, поэтому я не могу прочитать ваш образец кода в качестве возврата NULL, а затем некоторые символы, когда вы утверждаете, что вы его прочитаете.

Возможно, чтение в технике разборки может помочь вам увидеть его, как я. Тем не менее, я не очень читал методы разборки, хотя я моществовал несколько парсеров в течение многих лет.

Я всегда удаляю ненужные скобки. Они не помогают в понимании кода, так как я знаю, что оператор Java довольно хорошо. Нечетное время я не уверен, я добавляю скобки и дождимся, чтобы увидеть, говорит ли идея мне, что они избыточны. Затем я удаляю их и пытаюсь совершить память правило приоритета, которое я только что обнаружил.

В кодовых базах я унаследовал, я склонен найти наибольшее количество избыточных скобок в областях кода, которые бедны по другим причинам, поэтому я связываю два.

Нет, это не должно быть фактически стандартом. Я предпочитаю это без друзей.

Я думаю, что единственная причина поставить их туда заключается в том, чтобы заставить порядок оценки или уточнить запутанную линию.

Обе варианты верны, используйте то, что использует вашу команду или что вам нравится, если вы работаете в одиночку.

IIRC по умолчанию CheckStyle использует руководящие принципы Sun's (RIP) стиль, поэтому, если вы хотите соответствовать стандартному стилю, слушайте его и удалите друзей.

В основном, нет.

Скобки не требуется Вокруг Темнари (также известное как условные) операторы или его разделы, потому что их приоритет настолько очень низкий по порядку операций (чуть ниже логических операторов и выше назначения). Смотрите ссылку ниже для полной таблицы.

Может быть утверждено, поэтому такие ненужные панцы Визуально беспорядок код, и они показывают отсутствие понимания со стороны программиста.

Исключения, которые могут потребовать использованию вручения в или вокруг или вокруг них:

  • Если ваш тройник достаточно сложный, чтобы заслужить несколько строк; Затем вы можете окружать ваше заявление в Parens, чтобы предотвратить автоматическую вставку с запятой.

  • Если ваш тройник вложен в другое тэйна.

Смотрите также на MDN:

Поскольку основой для вашего вопроса связан с актом чтения кода, я подхожу на вопрос с этой точки зрения.

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

В качестве альтернативы, вы можете использовать редактор, который позволяет настроить стили: вы можете сделать тройным оператором другим цветом, поэтому он выпрыгивает на вас. Notepad ++, например, имеет ряд встроенных тем, которые делают это, как и много других редакторов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top