Перенос строк в Eclipse Java formatter

Я пытаюсь настроить средство форматирования кода Java для компактного форматирования. Я установил политику «Переносить туда, где необходимо», а максимальную ширину строки — 80, но она либо переносится туда, где не должна, либо не переносится туда, где должна... Вот пример того, что я получаю :

// -------------------------------------------------------------------------80->
public class FormatterTest {
    void test() {
        int i, a = 1, b = 1, c = 1, d = 1;
        i =
                a
                        * b
                        * c
                        * d
                        * (100000000 + 100000000 + 100000000 + 100000000
                                + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);
    }
}
// -------------------------------------------------------------------------80->

И что я хотел бы:

    i = a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000
            + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);

Спасибо за вашу помощь.


person Patrick    schedule 08.12.2011    source источник
comment
для какого типа оператора вы установили Wrap, где это необходимо?   -  person Kent    schedule 08.12.2011
comment
Я бы подумал так, если бы современный форматировщик кода, такой как в Eclipse, не смог правильно отформатировать код. Это может означать, что в этом коде что-то не так, эту проблему следует решить путем улучшения кода, а не форматирования.   -  person Rangi Lin    schedule 08.12.2011
comment
Я не знаю, современный ли Eclipse, но его средство форматирования не может форматировать простые выражения. Я думаю, слишком легко притворяться, что это мой код. У меня такая же проблема с кодом из других проектов.   -  person Patrick    schedule 08.12.2011


Ответы (3)


Вы можете подавить форматирование, если добавите // в конце строки:

i = a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000 //
        + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);
person Kai    schedule 08.12.2011
comment
@Patrick: использование этого обходного пути должно быть абсолютным исключением. Если вам это нужно оптом, возможно, у вас есть проблема с вашим стилем кодирования. В любом случае, ширина строки 80, на мой взгляд, несовременна во времена дешевых 24-х мониторов. - person Kai; 08.12.2011
comment
@user714965 user714965 согласен, у нас есть общий форматировщик, который устанавливает максимальную ширину = 150. также альтернативой игнорированию форматирования является //@formatter:off, а затем //@formatter:on. - person Kent; 08.12.2011
comment
Проблема точно такая же (только реже) с шириной строки 150. - person Patrick; 08.12.2011

хорошо, в комментарии вы сказали «выражения», есть разные выражения. проверьте скриншот. Я думаю, что это (пример кодов затмения справа) выглядит так, как вы хотите.

надеюсь, что это полезно.

введите здесь описание изображения

ИЗМЕНИТЬ

не могли бы вы попробовать

 expressions-> Assignments :Do not wrap
person Kent    schedule 08.12.2011
comment
Извините, но я пробовал разные конфигурации с разными типами выражений, но не могу получить правильное форматирование. Это нормально в предварительном просмотре, но не в моем коде (в моем примере для всех типов выражений установлено Wrap, где это необходимо). - person Patrick; 08.12.2011
comment
какой-то тип выражения, который вам не нужно устанавливать для переноса. проверьте мои обновления. Надеюсь, поможет. - person Kent; 08.12.2011
comment
Это немного лучше, но не настолько, он по-прежнему переносится там, где не должен, и не переносится там, где должен. Спасибо, в любом случае. - person Patrick; 08.12.2011

Мне удалось отформатировать его в моем Eclipse следующим образом, используя настройки форматирования «Java Conventions [встроенный]»:

public class FormatterTest {
    void test() {
    int i, a = 1, b = 1, c = 1, d = 1;
    i = (a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000
        + 100000000 + 100000000 + 100000000 + 100000000 + 100000000));
    }
}

По какой-то причине скобки вокруг всего выражения необходимы. Без них у меня получается совсем другое форматирование.

Надеюсь это поможет.

person stoyanr    schedule 08.12.2011
comment
Хороший хак, но все же хак. Боюсь отформатированный глючит. - person Patrick; 08.12.2011