Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Оформление кода в Java


Автор: pvp 4.8.2008, 10:04
есть два популярных стиля
1:
Код

public void function() {
}

2:
Код

public void function()
{
}


прокаментируйте пожалуйста ваш выбор

Автор: w38 4.8.2008, 10:27
в самом начале пользовался вторым способом, тогда это было аргументировано тем что писал в vi, и там быстрее было прыгать между началом и концом блока клавиатурными комбинациями
Потом в конторе учредили code convention и перевели на первый способ, и, где-то в одно время с этим, Эклипса достигла приемлимого уровня юзабельности, так что начал пользоваться форматированием этого редактора.

Автор: Grig 4.8.2008, 10:35
нравиться первый способ. Чисто визуально =)

Автор: pvp 4.8.2008, 10:39
Цитата(w38 @  4.8.2008,  10:27 Найти цитируемый пост)
в самом начале пользовался вторым способом

тоже самое
а теперь пересел на Java, и смотрю что почти во всех примерах используют 1 стиль
но мне больше нравится 2 стиль, по мне так он более читабельный

Добавлено через 2 минуты и 53 секунды
Цитата(Grig @  4.8.2008,  10:35 Найти цитируемый пост)
Чисто визуально 

думаю вы уже привыкли
но мне очень трудно искать первую скобку, особенно если строка очень длинная

Автор: Platon 4.8.2008, 10:46
нравился 2-й стиль, долго использовал, потому, что видно какая скобка к какой относится.  Но под влиянием одного персонажа, перешел на 1-й стиль, теперь использую только его. Читать с бумажки уже давно не приходилось, а IDE подсвечивает соответствующие скобки.

Автор: pvp 4.8.2008, 10:49
Цитата(Platon @  4.8.2008,  10:46 Найти цитируемый пост)
Читать с бумажки уже давно не приходилось, а IDE подсвечивает соответствующие скобки

но если 
Цитата(Platon @  4.8.2008,  10:46 Найти цитируемый пост)
видно какая скобка к какой относится

почему не использовать 2-й стиль

Автор: Platon 4.8.2008, 11:27
Цитата(pvp @  4.8.2008,  11:49 Найти цитируемый пост)
почему не использовать 2-й стиль

экономия места. с множеством скобок по второму стилю, код перестает быть компактным. Да и просто уже дело привычки.

Автор: pvp 4.8.2008, 11:34
Цитата(Platon @  4.8.2008,  11:27 Найти цитируемый пост)
экономия места. с множеством скобок по второму стилю

ну вот и первый аргумент  smile 

Автор: Dummy 4.8.2008, 11:37
Для Java использую 1-й стиль, для C/C++ - 2-й. Просто в силу того, что, когда переходил от C / C++ к Java, coding conventions конторы требовали именно такого оформления smile  А потом привык, и об особых аргументах за и против не задумывался.

Да и http://java.sun.com/docs/codeconv/ тоже как-то рекомендуют стиль 1 smile, хоть и ненавязчиво.

Автор: pvp 4.8.2008, 11:40
интерестно а есть редактор каторый бы выделял скобки, не только в момент навидения на них
например чтоба они всегда юыли бы красноми

Автор: Kangaroo 4.8.2008, 12:20
Первый конечно.


Цитата(Grig @  4.8.2008,  10:35 Найти цитируемый пост)
Чисто визуально =) 

Ага


Цитата(Platon @  4.8.2008,  10:46 Найти цитируемый пост)
нравился 2-й стиль, долго использовал, потому, что видно какая скобка к какой относится. 

Хм.. а табуляция? Если использовать ее, то все будет отлично видно.


Цитата(Platon @  4.8.2008,  11:27 Найти цитируемый пост)
экономия места. с множеством скобок по второму стилю, код перестает быть компактным.

Правда

Цитата(pvp @  4.8.2008,  11:40 Найти цитируемый пост)
например чтоба они всегда юыли бы красноми 

И отвлекали постоянно..

Автор: pvp 4.8.2008, 12:29
Цитата(Kangaroo @  4.8.2008,  12:20 Найти цитируемый пост)
И отвлекали постоянно

можно поставить чекбокс(красный/чёрный)
Цитата(Kangaroo @  4.8.2008,  12:20 Найти цитируемый пост)
Хм.. а табуляция? Если использовать ее, то все будет отлично видно.

 smile 
что я увижу где начинаетя блок(первая фигурная скобка) ?

табуляция используется и во 2-м стиле,
табуляция не является признаком того есть блок( { } ) или его нет

Автор: vdweller 4.8.2008, 12:29
использую 2-й стиль
намного более читабельно для меня

Автор: Mayk 4.8.2008, 12:34
примернр такой.
Код

void function(....)
{
        if( a ){
            .....        
        }
}
void function2(....)
{
        if( a && b
        || c && d 
        ){
            .....        
        }
}

void function3(
        int a, int b, int c,
        int d, int e, int f
){
        if( a && b
        || c && d 
        ){
            .....        
        }
}


Автор: $tatic 4.8.2008, 12:35
Первый - потому что и сама Sun так пишет.

Автор: pvp 4.8.2008, 12:35
Mayk, а почему не один стиль ?

Автор: Mayk 4.8.2008, 12:36
Цитата(pvp @  4.8.2008,  16:35 Найти цитируемый пост)
Mayk, а почему не один стиль ? 

ф-ции удобнее отделять. сишная привычка.

Автор: pvp 4.8.2008, 12:53
Цитата($tatic @  4.8.2008,  12:35 Найти цитируемый пост)
потому что и сама Sun так пишет. 

а Sun пишет почему она выбрала этот стиль ?
ссылки на английском не давать, ну или хотябы переводите пожалуйста

Автор: EvgenZ 4.8.2008, 12:58
1 стиль, меньше расползается код, визуально нравится и на работе стандарт такой ))) 

Автор: powerOn 4.8.2008, 13:27
стиль 2. 

Автор: neiron 4.8.2008, 14:01
не вижу плюсов у способа 2, не вижу минусов у способа 1. 
Да и привык уже к первому. 

Если правильно форматировать код, используя табуляцию, то всё всегда понятно - где начало, а где конец.

Автор: Mayk 4.8.2008, 15:02
Цитата(neiron @  4.8.2008,  18:01 Найти цитируемый пост)

Если правильно форматировать код, используя табуляцию, то

или пробелы. таб vs пробелы тоже тот ещё холивар. smile 

Автор: garbuz 4.8.2008, 16:37
Тоже использую первый стиль, изначально так и начинал писать.

Автор: SoulKeeper 4.8.2008, 18:15
1 для меня удобнее. 2-й слишком расползается, да и конвеншены сановские...

Автор: neiron 5.8.2008, 08:30
Mayk, имхо, неоспоримо. 
тут всё просто - табы дают больший сдвиг, т.е. лучшее зрительное разделение.
Пробелы быть может стоило бы юзать при большой вложенности, но не может её быть в подавляющем количестве. 
Если говорить о том, что пробелы позволяют увидеть строку до конца, так тоже не факт. Гораздо проще писать строчку в несколько, да и сопсно в строчке как правило важнее первое "слово", ибо по нему уже можно определить общую ситуацию.

а как отделять важные участки кода?
я обычно ставлю что-то типо 
Код

/*---------------------------------------------------------------------------------------------*/
/*---------------------------название-----------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/

а когда и editor - блоки юзаю
тоже чем не тема для спора))) 

Автор: Shaggie 5.8.2008, 10:44
Цитата(neiron @  5.8.2008,  09:30 Найти цитируемый пост)

а как отделять важные участки кода?

Выносить в отдельный метод/класс и писать к нему javadoc.

Автор: vinter 5.8.2008, 11:03
Цитата(neiron @  5.8.2008,  09:30 Найти цитируемый пост)
а как отделять важные участки кода?

Код

/*========================================================
                                                Название
   ========================================================*/

так красивее smile

слово "Название", почему то вправо съезжает

Автор: mbasil 5.8.2008, 11:55
1. Сначала, придя в Java из С++, использовал второй вариант, потом понял -  правильно написал один из гуру: "Помните, что код читает не только компилятор!".

2. В связи с тем, что в  Java отсутствует хидер файл в качестве справочника, следует код писать компактно - все переменные (и экземпляра и статические) объявляю вверху описания класса.   Первый способ также способствует компактности кода.

3. Читабельность кода на первом месте, в том числе и тот критерий, чтобы на экране размещалось как можно больше кода. Если читабельность в ущербе вставляем пустую строку.

4. Вследствие необходимости чтения кода коллегами (см. пункт 1) код должен быть привычным всем, чтобы одним взглядом можно было оценить то, что в нем делается (а в большинстве случаев Java разработчики используют именно первый вариант) полагаю, что ответ на вопрос однозначен, как бы нам не нравился второй вариант. Клянусь, он мне нравится больше! 

Автор: jeank 5.8.2008, 12:10
Однозначно второй, может код и расползается, зато он симметричен - скобочки строго друг над другом - для меня очень читабельно, пусть даже он и занимает больше места.

Добавлено через 11 минут и 3 секунды
Однозначно второй, может код и расползается, зато он симметричен - скобочки строго друг над другом - для меня очень читабельно, пусть даже он и занимает больше места.

Автор: dorogoyIV 5.8.2008, 14:14
это бесконечные рассуждения  smile 
лично я написал себе утилитку, которая, переписывает файл.java расставляет скобки как мне надо и удаляет лишние пустые строки.

по теме - я за 2

Автор: val_vp 5.8.2008, 15:35
за 1 - на работе кодинг стандарт предписывает именно его.

Автор: chief39 6.8.2008, 12:02
Цитата(jeank @  5.8.2008,  12:10 Найти цитируемый пост)
Однозначно второй, может код и расползается, зато он симметричен - скобочки строго друг над другом - для меня очень читабельно, пусть даже он и занимает больше места. 

В идее нажимаю ctrl-alt-I  - всё расставляется. Ровно под каждой декларацией метода находим вторую скобку.
Во втором методе в два раза больше скобок, которые бросаются в глаза при "перелистывании" взглядом по левому отступу. Боьлше инфы, меньше "схватываемость на лету".

Автор: vinter 6.8.2008, 14:01
Второй метод. Скобки визуально лучше видно.

Автор: jeank 6.8.2008, 16:35
Согласен с vinter - именно визуально (лично мое мнение) гораздо лучше, скобки зрительно фиксируются как границы блока и этот блок четко просматривается. А для тех, кто любит компактность, предлагаю вообще все в одну строчку писать, пока на экран помещается - будет офигительно компактно, и скобки при "перелистывании" взглядом по левому отступу вообще в глаза бросаться не будут, их можно будет найти только с факелом либо поиском в любимом IDE.

Автор: chief39 6.8.2008, 17:17
Цитата(jeank @  6.8.2008,  16:35 Найти цитируемый пост)
А для тех, кто любит компактность, предлагаю вообще все в одну строчку писать, пока на экран помещается - будет офигительно компактно, и скобки при "перелистывании" взглядом по левому отступу вообще в глаза бросаться не будут, их можно будет найти только с факелом либо поиском в любимом IDE. 

Если это камень в мой огород(а очень похоже), то:
Я сказал почему мне удобен именно такой метод. 
Пояснил как у меня решается проблема визуального соотношения метод-скобка-скобка.
Я не сказал что все остальные варианты - плохие.
Добавлю что предпочитаю пользоваться принципом разумной достаточности.
Отвечу что "совет" писать в одну строчку для меня неприемлем.
И если уж пошли такие пироги "ниачём" - "посоветую" писать ВСЁ через строчку, добавить обрамление блоков скобками где это возможно и усердно юзать конструкции типа:
Код

RedClass redObject = ((RedClass)(redObjectDao.findBySubId(((short)24))));

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

Интересно поговорили, ага?


Автор: dorogoyIV 8.8.2008, 16:54
еще такая ситуация:
Код

for(...)
 ...

можно написать со скобками, а можно и без скобок!
Код

for(...)
 bla-bla

for(...)
{
 bla-bla
 bla-bla
}

for(...){
 bla-bla
 bla-bla
}


можно и перепутать скобки...
???
это я к тому, что изначально читающий код человек не знает, что делается в цикле for, как всегда его до конца не прочитываешь, и не замечаешь открывающую скобку.
ну это, конечно, мои личные наблюдения smile
я за 2

Автор: niasilil 10.8.2008, 05:28
Цитата(dorogoyIV @ 5.8.2008,  14:14)
это бесконечные рассуждения  smile 
лично я написал себе утилитку, которая, переписывает файл.java расставляет скобки как мне надо и удаляет лишние пустые строки.

по теме - я за 2

ой, какая прелесть. 
Зачем же изобретать велосипед, если есть code formatter в эклипсе? 

ЗЫ а мне пофигу как скобки ставить, лишь бы как все в компании. Тогда разногласий не будет. А уж читабельность кода от скобок в последнюю очередь зависит. 

Автор: dorogoyIV 10.8.2008, 14:01
Цитата(niasilil @  10.8.2008,  05:28 Найти цитируемый пост)
Зачем же изобретать велосипед, если есть code formatter в эклипсе? 

ну какой же это велосипед?
это утилитка лично для меня.
даже если существует в какой то IDE  такая утилита, мне не было лишним потренироваться
просто я не пользую IDE.
поэтому не знаю...

Автор: JHelg 10.8.2008, 22:44
Давно, когда переходил с С,С++ на Java по привычке пользовался вторым стилем.) Сейчас пользуюсь и наверное уже всегда буду пользоваться первым стилем.
P.S. Случайно проголосовал за второй стиль))
А вообще интересно знать, в чем смысл этой темы?) Имхо на вкус и цвет товарищей нет.)

Автор: iluvatar 11.8.2008, 13:00
Скажу и я свое ИМХО:

1. по поводу code fomatter - в нормальных IDE он настривается, т.е. как захочет прогрммист, так среда и будет форматировать код.

2. по поводу "какой стиль лучше":

пример стиля 1:
Код

private static void someMethod() {
        // some code
        // some code
        // some code
        // some code
        // some code
}


пример стиля 2:
Код

private static void someMethod()
{
        // some code
        // some code
        // some code
        // some code
        // some code
}


Разве в первом случае глядя на закрывающую скобку непонятно где стоит открывающая? Ведь табы не зря придумали. 
Сам считаю, что во втором просто добавляется одна строчка, что делает код менее читабельным, особенно для методов состоящих из одной строчки (геттеры и сеттеры), которые читать просто невозможно:
Код


public int getField1()
{
    return field1;
}

public int getField2()
{
    return field2;
}

public int getField3()
{
    return field3;
}

public int getField4()
{
    return field4;
}

Автор: chief39 14.8.2008, 16:31
dorogoyIV
на сей случай лучше обрамлять одиночные стэйтменты после цикла, ифа и т.п.
Цитата(dorogoyIV @  8.8.2008,  16:54 Найти цитируемый пост)
это я к тому, что изначально читающий код человек не знает, что делается в цикле for, как всегда его до конца не прочитываешь, и не замечаешь открывающую скобку.


Очень легко кто-то может найти "место где Х меняется на 5" и добавить строчку, "меняющую и У на 6". Завтыкав с тем, что к циклу или ифу будет "прицеплена" только первая строчка. Тут как раз скобки не помешают. В одну строку или в 10

Автор: Ortega 15.8.2008, 14:57
JHelg, аналогично smile. Причем мне казалось, что 2й читабельнее. А 1й способ не нравился....
Потом в определенный момент решил, что не зря, наверное сан рекомендует первый - попробовал использовать. А дальше - как с наркотиками - втянулся и не смог отказаться smile.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)