Что такое индентация?

Индентация — способ оформления программного кода при помощи отступов таким образом, чтобы структурные блоки было видно наглядно. Зачем нужна индентация:

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

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

Использование индентации

Если вы выделяете блок кода (if, while, foreach и т.п.), то весь код, который находится внутри блока, должен быть на один таб правее, чем основной код.

if ($x) {
    somefunction();
}

Если внутри блока выделяется еще один блок, то он должен быть еще на один таб правее.

if ($x) {
    somefunction;
    if ($y) {
        anotherfunction();
    }
    nextfunction();
}

Скобка, которая закрывает блок, должна быть на том же уровне, что и начало блока. Только обратите внимание, что речь идет не про скобку, открывающую блок, а сам блок (в примере выше это будет if).

Если у нас есть два равноправных блока, например if-else, то они будут на одном уровне.

if ($x) {
    somefunction();
} else {
    anotherfunction();
}

Таких блоков может быть сколько угодно:

if ($x < 0) {
    somefunction();
} else if ($x > 0) {
    anotherfunction();
} else {
    moreanotherfunction();
}

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

if ($x < 0) {
    somefunction();
} else if ($x > 0) {
    anotherfunction();
} else {
    if ($y > 0) {
        nextfunction();
    } else {
        extrafunction();
    }
}

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

echo $x;
echo $y;
echo $z;

Даже если они внутри блока:

if ($x) {
    echo $x;
    echo $y;
    echo $z;
}

Если вам нужно добавить отступ нажимаете клавишу Tab на клавиатуре. Если вам нужно сдвинуть уже существующий блок кода вправо, то выделяете блок кода, нажимаете клавишу tab. Если влево, выделяете, нажимаете Shift+Tab. Это работает в любом редакторе, предназначенном для работы с кодом. Редко в каких-то местах может не работать. Использовать для индентации клавишу пробел крайне не рекомендуется.

Перенос в рамках одной команды

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

callMyFunc(here-some-very-long-value-for-argument-1-of-the-function, here-some-very-long-value-for-argument-2-of-the-function, here-some-very-long-value-for-argument-3-of-the-function)

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

callMyFunc(
    here-some-very-long-value-for-argument-1-of-the-function,
    here-some-very-long-value-for-argument-2-of-the-function,
    here-some-very-long-value-for-argument-3-of-the-function
)

Кроме того, рекомендуется помещать каждый аргумент в отдельную строку. Даже если какой-то из аргументов короткий.

callMyFunc(
    x,
    here-some-very-long-value-for-argument-1-of-the-function,
    here-some-very-long-value-for-argument-2-of-the-function,
    y,
    here-some-very-long-value-for-argument-3-of-the-function
)

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

Стандарты на индентацию

В настойщий момент существуют два разных подхода к тому, как текстовый редактор должен реализовывать индентацию:

  • при нажатию на клавишу Tab текстовый редактор вставляет специальный символ табуляции (один),
  • при нажатии на клавишу Tab текстовый редактор вставляет некоторое число пробелов (обычно 4, 8 или 2). Конкретный способ выбирается в настройках текстового редактора.

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

results matching ""

No results matching ""