Перенос строк кода - как обрабатывать длинные строки - PullRequest
32 голосов
/ 16 сентября 2010

Я сталкиваюсь с определенной строкой длиной 153 символа. Теперь я склонен разбивать вещи после 120 символов (конечно, это сильно зависит от того, где я нахожусь и от местных соглашений). Но, честно говоря, везде, где я ломаю черту, все выглядит плохо. Поэтому я ищу некоторые идеи о том, что я должен сделать для этого.

Вот строка:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>();

Я открыт как идеям о том, как / где прервать линию (и почему), так и способам сокращения самой линии.

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

Спасибо!

Ответы [ 5 ]

40 голосов
/ 16 сентября 2010

В общем, я разбиваю строки перед операторами и делаю отступ для следующих строк:

Map<long parameterization> longMap
    = new HashMap<ditto>();

String longString = "some long text"
                  + " some more long text";

Мне ведущий оператор ясно сообщает, что «эта строка была продолжена чем-то другим, оно не стоит само по себе ".У других людей, конечно, разные предпочтения.

12 голосов
/ 01 апреля 2015

Это то, как я это делаю, и Google делает это по-своему.

  • Перерыв перед символом невыделение операторов.
  • Разрыв после символа для = и для ,.

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

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper =
        new HashMap<Class<? extends Persistent>, PersistentHelper>();

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

Это, конечно, личное предпочтение, и если у вашего проекта есть своя собственная конвенция для переноса строк, вам следует следовать, нравится вам это или нет.

6 голосов
/ 16 сентября 2010

ИМХО, это лучший способ написать вашу строку:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper =
        new HashMap<Class<? extends Persistent>, PersistentHelper>();

Таким образом, увеличенный отступ без скобок может помочь вам увидеть, что код был просто разделен, потому что строка была слишком длинной.И вместо 4 пробелов, 8 сделает это понятнее.

4 голосов
/ 16 сентября 2010

Использует статические фабричные методы Guava для Карт и имеет длину всего 105 символов.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap();
0 голосов
/ 01 декабря 2016

Я думаю, что перемещение последнего оператора в начало следующей строки является хорошей практикой. Таким образом, вы сразу узнаете цель второй строки, даже если она не начинается с оператора. Я также рекомендую 2 отступа (2 вкладки) для ранее сломанной вкладки, чтобы отличать ее от обычного отступа. Это сразу видно как продолжение предыдущей строки. Поэтому я предлагаю это:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper 
            = new HashMap<Class<? extends Persistent>, PersistentHelper>();
...