Как разбить длинные строки в 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
Можно было бы предпочесть разрыв строки на низком уровне, чтобы сделать его читабельным, если вы видите код, оцененный на высоком уровне, в одной строке.