# Объявления (Декларации)

## Количество на строку

Рекомендуется размещать одну декларацию на строку, поскольку это располагает к комментированию. Другими словами:

```
int level; // indentation level
int size;  // size of table
```

Предпочтительнее, чем

```
int level, size;
```

Ни в коем случае не ставьте данные разных типов в одну строку:

```
int foo,  fooarray[]; //ОЧЕНЬ ПЛОХО!
```

Примечание: в указанных выше примерах используется один пробел между типом и именем переменной. Еще один допустимый вариант - использовать табуляцию:

```
int     level;          // indentation level
int     size;            // size of table
Object  currentEntry;    // currently selected table entry
```

## Инициализация

Старайтесь инициализировать локальные переменные там, где они объявляются. Единственной причиной не инициализировать переменную сразу может быть зависимость изначального значения от каких-либо вычислений или условий, предшествующих инициализации

## Расположение

Ставьте декларации только в начале блоков. (Напомним: блок кода – это любой участок кода, окруженный фигурными скобками "{" и "}".) Не стоит дожидаться первого применения переменной для ее декларации, это может запутать других программистов и ухудшить переносимость кода.

```
void myMethod() {
    int int1 = 0;         // beginning of method block

    if (condition) {
        int int2 = 0;     // beginning of "if" block
        ...
    }
}
```

Единственным исключением из этого правила являются счетчики для циклов, которые можно декларировать прямо в объявлении цикла:

```
for (int i = 0; i < maxLoops; i++) { ... }
```

Избегайте локальных деклараций, которые перекрывают декларации на более высоком уровне. Например, не объявляйте одноименной переменной во внутреннем блоке:

```
int count;
...
myMethod() {
    if (condition) {
        int count = 0;     // ИЗБЕГАТЬ!
        ...
    }
    ...
}
```

## Объявление классов и интерфейсов

При создании классов и интерфейсов необходимо соблюдать следующие правила:

* Не ставить пробелов между именем метода и скобкой "(", которой начинается список параметров.
* Открывающая фигурная скобка "{" должна находиться в конце той же строки, в которой находится декларация
* Закрывающая фигурная скобка "}" стоит в начале строки, на одном уровне с соответствующим открывающим выражением, за исключением случаев пустых выражений, тогда закрывающая скобка "}" ставится сразу за открывающей "{"

```
class Sample extends Object {
    int ivar1;
    int ivar2;

    Sample(int i, int j) {
        ivar1 = i;
        ivar2 = j;
    }

    int emptyMethod() {}

    ...
}
```

* Методы разделяются пустой строкой.
