LINUX.ORG.RU

[Правила хорошего кода] Переносы.


0

3

Хотелось бы узнать как и когда принято переносить длинные текст в коде.
На счет «когда» слышал что принято переносить строки если она не умещается в 80-100 символов. Так ли это?
И как следует выравнивать строки после переноса, например:

String str = "Hello " + tmp + 
"world;"
или
String str = "Hello " + tmp + 
             "world";
или
String str = "Hello " + tmp + 
       "world";
Ну и такой же вопрос по применению переноса в методах.
        List<String> usersList = loginHelper.getUsers(SqlUtils.getSqlUtils().SELECT_USER_BY_GROUPS, 
                new String[] {year, group});
или
        List<String> usersList = loginHelper.getUsers(SqlUtils.getSqlUtils().SELECT_USER_BY_GROUPS, 
                                                      new String[] {year, group});
второй вариант вроде лучше читается, но добиться такого результата ТАБами не получается, приходится либо пробелы вставлять либо выравнивание происходит кривовато.
Ну и еще вопрос, где это все в эклипсе настраивается?


В таких тяжелых случаях как твой вот так:

List<String> usersList = loginHelper.getUsers(
                SqlUtils.getSqlUtils().SELECT_USER_BY_GROUPS, 
                new String[] {year, group}
                );

Но вообще, это типичный явабыдлокод.

LamerOk ★★★★★
()

Кстати еклипс иногда и вот так перенести может:

List<String> usersList = loginHelper
        .getUsers(SqlUtils.getSqlUtils()
            .SELECT_USER_BY_GROUPS,new String[] {year, group});

n4ela
() автор топика
Ответ на: комментарий от Suntechnic

>Вызов функций, это всегда долго. Иногда непозволительно долго...

Не согласен. Вызов даже виртуальной функции куда как быстрее чем уродский набор switch/case (и else if тоже фтопку). Во всяком случае в x86. Да, а если функция не должна быть косвенной/рекурсивной/условной мы её можем сделать inline'овой, что уберёт её вызов из кода вообще. (тут правда надо быть внимательным - если заинлайнить очень много, то это может привести к падению быстродействия - код не влезет в самый быстрый кеш, и программа будет мучительно долго грузить данные из RAM).

drBatty ★★
()
Ответ на: комментарий от drBatty

Хорошо - не всегда.
Но возьмём какой-нибудь интерпритируемый язык, особенно какой-нибудь встроенный язык макросов.
Это будет хороший пример - он будет работать медленно уже сам по себе, а вызов процедур и функций в нём это будет вообще растягиваться в вечность.
Ваше приложение будет еле шевелиться...

И вот тогда поймёте, откуда берётся вот такой вот код:

if a then
else
if b then
код
end if
end if

Suntechnic ★★★★★
()
Ответ на: комментарий от anonymous

Ради интереса спрошу.

if (x<foo(y,z)) haha=bar[4]+5;
else {
  while (z) {
    haha+=foo(z,z);
    z--;
  }
  return ++x+bar();
}
if (x < foo (y, z))
  haha = bar[4] + 5;
else
  {
    while (z)
      {
        haha += foo (z, z);
        z--;
      }
    return ++x + bar ();
  }

Первое сильно нечитабельнее второго, что с приведенной ссылки?

anonymous
()
Ответ на: комментарий от Suntechnic

>а вызов процедур и функций в нём это будет вообще растягиваться в вечность.

почему? функции в bash не намного тормознее самого bash'а. Не?

И вот тогда поймёте, откуда берётся вот такой вот код:

if a then else if b then код end if end if

Откуда? не понимаю.

drBatty ★★
()
Ответ на: комментарий от anonymous

На мой взгляд, оба выглядят в равной степени уродски. А второй вариант еще и доставит много веселья пробелами перед открывающей скобкой, когда потребуется заменить функцию на макрос.

В своих проектах использую стиль наподобие такого:

if (x < foo(y, z))
{
    haha = bar[4] + 5;
}
else
{
    while (z)
    {
        haha += foo(z, z);
        z--;
    }
    return ++x + bar();
}

geekless ★★
()
Ответ на: комментарий от Suntechnic

>И вот тогда поймёте, откуда берётся вот такой вот код

Берётся он, как правило, из 20-й переделки/починки алгоритма подряд, после которой уже не охота приводить конструкции в нормальный вид, а хочется поскорее закоммитить и забыть.

geekless ★★
()
Ответ на: комментарий от geekless

Нет.

Фишка:
1 Очень медленный интерпритатор, медленее чем bash.
2 Пишем «if a then else код», для того чтобы избавится от лишней операции Not в «if Not(a) then код» так как это внутри цикла и каждая наносекунда (также сейчас правильно?) на счету.
3 Не объединяем условия с помощью and потому, что в данном интерпретаторе второе условие в if проверяется в любом случае, даже если первое ложно и всё условие заведомо будет ложно.

Это я всё к тому, что многое зависит от ситуации и не всегда стоит что-то категорично отвергать - всё в реальности может оказаться совсем не таким как на самом деле...

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

1 Очень медленный интерпритатор, медленее чем bash.

Название, версия, пароли, явки.

медленее чем bash

каждая наносекунда

Нанотехнологии в действии?

Серьёзно, что за язык такой, что за интерпретатор и что за задача?

geekless ★★
()
Ответ на: комментарий от congestion_control

Дело не в мониторах. А в том, что в столбик читать легче. Глазам не надо далеко бегать.

hibou ★★★★★
()
Ответ на: комментарий от geekless

Название, версия, пароли, явки.

Star Basic

Нанотехнологии в действии?

Как завещал ДАМ.

Suntechnic ★★★★★
()
Ответ на: комментарий от korvin_

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

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.