Как разбить длинные строки в Java

В официальном документе Oracle о соглашениях по кодированию пишут:

"Ниже приведены два примера разбиения арифметического выражения. Первое предпочтительнее, поскольку разрыв происходит за пределами выражения в скобках, которое находится на более высоком уровне".

longName1 = longName2 * (longName3 + longName4 - longName5)
 + 4 * longname6; // PREFER

longName1 = longName2 * (longName3 + longName4
 - longName5) + 4 * longname6; // AVOID

Что они имеют в виду под "более высоким уровнем"? Связано ли это с порядком оценки в выражении?

6 ответов

Из предыдущего заявления из официальной документации:

"Предпочитайте перерывы более высокого уровня перерывам более низкого уровня"

Другими словами, избегайте разбивать вложенные выражения из-за читабельности.

Чем больше вложенное в скобки выражение, тем ниже его уровень.

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

Вопрос, будем ли мы ломать черту внутри или снаружи следующего термина:

(longName3 + longName4 - longName5)

Документация предполагает, что предпочтительнее не разбивать вышеупомянутый термин, заключенный в скобки, а скорее, чтобы разрыв произошел на более высоком уровне. Это не говорит о том, почему это предпочтительнее; обе версии кода, который вы разместили, логически идентичны. Одна возможность состоит в том, что взлом на более высоком уровне делает код более легким для чтения.

"более высокий уровень" относится к более высокому уровню приоритета. В самом конце https://www.tutorialspoint.com/java/java_basic_operators.htm есть раздел на эту тему.

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

Нет. Порядок оценки такой же, но "высокий уровень" означает порядок оценки, который в данном случае является выражением в скобках.

Этот код имеет пунктирные строки на высоком уровне:

longName1 = longName2 * (longName3 + longName4
 - longName5) + 4 * longname6; // AVOID

Этот код имеет пунктирные строки на низком уровне:

ongName1 = longName2 * (longName3 + longName4 - longName5)
 + 4 * longname6; // PREFER

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

Другие вопросы по тегам