2010-12-15 6 views
12

Я немного озадачен количеством разработчиков, которых я вижу в методах написания и классах с фигурными фигурными скобками ниже имени класса или метода. Какое соглашение они следуют?Как называется это соглашение для фигурных скобок?

ВС clearly states что правильное заявление будет:

// this declaration follows sun's conventions 
class Sample extends Object { 

    Sample(int i, int j) { 
     .... 
    } 
} 

Еще больше и больше я вижу это объявлен (даже в книгах):

// this declaration follows a convention I cant identify 
class Sample extends Object 
{ 

    Sample(int i, int j) 
    { 
     .... 
    } 
} 

И я знаю, что соглашение просто конвенция и, пока вы следуете за ней, все хорошо. Я просто ищу ответ на какой конвенции последняя декларация следует?

+4

Не должно ли оно теперь читаться как «Oracle четко заявляет ...»? : P – FrustratedWithFormsDesigner 2010-12-15 16:38:31

+2

Несмотря на то, что вопрос однозначно связан с ** названием ** **, любопытно, как нетерпеливые люди должны выносить свои мнения и предпочтения как ответы вне темы (например [this] (http://stackoverflow.com/ вопросы/4452288/java-conventions-for-curly-braces/4452360 # 4452360) и [это] (http://stackoverflow.com/questions/4452288/java-conventions-for-curly-braces/4452413#4452413)) или в качестве голосов по этим ответам. – Jonik 2010-12-15 16:42:40

+0

Правило 0: Не потейте мелкие вещи. Все стандартные позиции фигурной скобки одинаково действительны. Используйте любой из них, который вам нравится.Смешивать и сочетать. Они не оказывают существенного влияния на читаемость. Они не заслуживают включения в конвенцию. – 2010-12-15 16:43:02

ответ

24

Это стандартное соглашение о стиле, называемое стилем ANSI. Он распространен и на других языках помимо Java.

2

последний выглядит как Allman indent style, который является довольно популярным в C++, но я не видел его часто используют в Java.

2

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

0

Вторая конвенция также стиль отступов по умолчанию Visual Studio (и, следовательно, довольно часто) для C#

1

Первая конвенция экономит драгоценное пространство. Согласование скобок выполняется редактором в любом случае.

11

Как вы говорите, вы видели это довольно много - разве это не значит, что это соглашение само по себе, независимо от того, есть ли у него один источник или имя для этого соглашения? Это так легко описать, я не думаю, что это требует определенной атрибуции. Страница "indent style" Википедии называет это Allman Style или ANSI-стилем, но, честно говоря, я использую его в течение многих лет, никогда не узнавая это имя, и я не думаю, что зная, что имя изменит что-нибудь о том, как я код :)

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