Тундра-Х

Правила написания кода:

0. В программе не должно быть ни единой строки, которая непонятна ее автору;

1. Код не должен содержать предупреждений на максимальном уровне компилятора (W4 для Visual Studio);

2. Переменные, функции, структуры и прочее должно быть поименовано просто и ясно. Однобуквенные переменные допускаются только в очевидных случаях (переменные цикла). Нужно пользоваться словарём.

3. Код должен быть аккуратно отформатирован:

4. Инициализация переменных. Каждая переменная должна быть инициализирована.

    // Неверно: 
    int i,j,k;
    int arr[10];
    FILE * f; int * p;
    
    // Верно: 
    int i = 0;
    int j = 0
    int k = 0;
    int arr[10] = {0};
    FILE * f = fopen( "inp.txt", "r" );
    int * p = NULL;
    

5. Валидация входных данных. Программа должна корректно работать независимо от входных данных. Наиболее частый пример - падение программы при отсутствии входного файла.

 
    // Неверно: 
    int num = 0;
    FILE * f = fopen( "in.txt", "r" ); //Если файл не существует, программа аварийно завершится на следующей строке.
    fscanf( f, "%d", &num );           //Файл может не содержать целых чисел, а проверки на это нет.
    
    // Правильно: 
    int num = 0;
    FILE * f = fopen( "in.txt", "r" );
    if( NULL == f ) {                   //Проверяем, что файл действительно открылся
        printf( "Cannot open file in.txt\n" );
        return -1;
    }
    if( 1 != fscanf(f, "%d", &num) ) {  //Проверяем успешность чтения целого числа.
        printf( "No integers found in in.txt\n" );
        return -2;
    } 
    

6. Использование неименованных констант (кроме очевидных случаев, вроде 0, 1, -1) не допускается. Каждой константе должно быть дано имя с помощью директивы #define.

7. Глобальные и статические переменные в коде не допускаются.

8. Константы в сравнениях пишутся слева.

 
    while(EOF != c) {...}
    if(-1 == i) {...}