# Операторы

## Простые операторы

Каждая строка должна содержать максимум один оператор:

```
++argv;         // Хорошо
--argc;         // Хорошо
++argv; --argc; // ПЛОХО!
```

## Составные операторы

Составные операторы, это такие операторы, которые содержат список операторов, заключенных в фигурные скобки "{ statements }".

* Вложенные операторы должны иметь отступ на один уровень больше, чем составной оператор.
* Открывающая скобка должна стоять в конце строки, начинающей составной оператор; закрывающая скобка должна стоять в начале строки и иметь отступ, такой же, как и составной оператор.
* Фигурные скобки окружают все операторы, даже одиночные, если они являются частью структуры, такой как if-else или for. Таким образом проще добавлять новые операторы, не допуская ошибок, возникающих из-за забытых скобок.

## Оператор return

Оператор return со значением не должен использовать ссылку на родителя, если только это не сделает возвращаемое значение более очевидным:

```
return;

return myDisk.size();

return (size ? size : defaultSize);
```

## Операторы if, if-else, if else-if else

Все операторы типа if-else должны иметь следующий вид:

```
if (condition) {
    statements;
}

if (condition) {
    statements;
} else {
    statements;
}

if (condition) {
    statements;
} else if (condition) {
    statements;
} else {
    statements;
}
```

Примечание: Оператор if следует всегда писать с фигурными скобками {}. Избегайте следующей ошибки:

```
if (condition) //ПЛОХО! ОТСУТСТВУЮТ СКОБКИ {}!
    statement;
```

## Оператор for

Оператор for должен иметь следующий вид:

```
for (initialization; condition; update) {
    statements;
}
```

Пустой цикл for (в котором вся работа выполняется на стадии инициализации, проверки условия и инкрементирования) должны иметь следующий вид:

```
for (initialization; condition; update);
```

## Оператор while

Оператор while должен иметь следующий вид:

```
while (condition) {
    statements;
}
```

Пустой цикл while должен иметь следующий вид:

```
while (condition);
```

## Оператор do-while

Оператор do-while должен иметь следующий вид:

```
do {
    statements;
} while (condition);
```

## Оператор switch

Оператор switch должен иметь следующий вид:

```
switch (condition) {
case ABC:
    statements;
    /* falls through */
case DEF:
    statements;
    break;
case XYZ:
    statements;
    break;
default:
    statements;
    break;
}
```

Всякий раз, если case предполагает автоматический переход к следующему (отсутствует оператор break), добавляйте комментарий в том месте, где должен быть break. Это показано в примере выше: комментарий /\* falls through \*/.

Каждый оператор switch должен содержать default вариант. Ставить break в инструкции default необязательно, но это защищает от возможной ошибки в будущем, если впоследствии добавят еще операторы case ниже.

## Операторы try-catch

Оператор try-catch должен иметь следующий вид:

```
try {
    statements;
} catch (ExceptionClass e) {
     statements;
}
```

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

```
try {
    statements;
} catch (ExceptionClass e) {
    statements;
} finally {
    statements;
}
```
