Пара полезных исключений из правил по форматированию исходного кода

в 19:06, , рубрики: ненормальное программирование, оформление кода, Программирование, Совершенный код, условные конструкции, метки: ,

Плоский дизайн (flat design), это сейчас модно и красиво. Внесем же наш маленький вклад в общую тенденцию, применим немного flat-форматированного кода

Отступ лесенкой

Вложенные секции кода рекомендуется писать с отступом относительно внешней секции:

{
    if (условие)
    {
        for(цикл)
        {
        }
    }
}

Это правило обычно соблюдается абсолютно. Но можно записать код вот так:

{
    if (условие)
    for(цикл)
    {
    }
}

Применение такой конструкции конечно же очень ограничено. К примеру, нельзя использовать, если есть блок else. Если это форматирование не вызывает у вас дискомфорта, попробуйте пару раз, возможно вам это понравится. Ведь уменьшение на несколько отступов в глубокой лесенке очень помогает.

Double-if

Поделюсь маленьким секретом. Когда-то я отправил специально обученного ниндзю-диверсанта, что бы он встроил в компилятор возможность писать код таким образом:

if (условие)
if (условие)
{
}

Да-да, вы не поверите, ему все удалось. С тех пор можно писать конструкции

if (a | b | c)
if (d | e)
for(цикл)
if (условие)
{
}

Это не опечатка, два if один за другим и без отступа! double-if, это полный аналог оператора &&.

вместо

if ((a | b | c)
&& (d | e))
{
    for(цикл)
    {
        if (условие)
        {
        }
    }
}

Эти маленькие примеры показательны, экспериментируйте! Но хочется предупредить против бездумного применения, используйте flat только там, где это не повредит читаемости кода.

Автор: aplic

Источник

  1. Андрей:

    У нас принят подход к форматированию круглых скобок по аналогии с фигурными (если, конечно, выражение длинное или сложное).
    Вместо:

    if ((a | b | c)
    && (d | e))

    можно написать:

    if
    (
    (a | b | c)
    && (d | e)
    )

    или так:

    if
    (
    (a | b | c) &&
    (d | e)
    )

    или так:

    if
    (
    (a | b | c)
    &&
    (d | e)
    )

    Соответственно непривычные двойные if-ы не потребуются

    • Андрей:

      что – то отступы не “нарисовались”, хотя я их набил пробелами, таб – не работает почему – то – переводит фокус на “отправить” – я случайно отправил недописанное сообщение

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js