6. Глубокие if

Весь приведённый далее код оформлен с использованием clang-format
int main(int argc, char *argv[])
{
    if (fopen(argv[1], "r"))
    {
        int size;
        if (fscanf("%d\n", &size) == 1)
        {
            char *arr = malloc(size);
            if (arr != NULL)
            {
                // etc.
            }
            else
            {
                // memory allocation failed
                return 1;
            }
        }
        else
        {
            // cannot open input file
            return 1;
        }
    }
    else
    {
        // cannot open input file
        return 1;
    }
    return 0;
}
Вариант реорганизации и исправления кода

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

int main(int argc, char *argv[])
{
    if (!fopen(argv[1], "r"))
    {
        // cannot open input file
        return 1;
    }
    int size;
    if (fscanf("%d\n", &size) != 1)
    {
        // cannot open input file
        return 1;
    }
    char *arr = malloc(size);
    if (arr == NULL)
    {
        // memory allocation failed
        return 1;
    }
    // etc.
    return 0;
}

Last updated