Temat: Ograniczanie czasu życia zmiennych

Dobrym nawykiem programistycznym jest ograniczanie czasu życia zmiennych. Sprowadza się to do tworzenia zmiennych tylko jeżeli są rzeczywiście potrzebne, aby ich zakres istnienia był jak najkrótszy.

Co prawda używamy kompilatora, który trzyma się zasady, że zmienne mogą być deklarowane tylko na początku bloków kodu, ale to wcale nie znaczy, że wszystkie zmienne muszą zostać zadeklarowane na początku funkcji (deklaracje mogą się znaleźć tylko bezpośrednio po otwierających nawiasach klamrowych).

Weźmy dla przykładu prostą funkcję zapisującą dane do pliku:

int zapiszPlik(char* nazwaPliku) {
    FILE* plik;
    int liczbaProbek = 10;
    int i;
    plik = fopen(nazwaPliku, "r");
    if (plik == NULL) {
        printf("Nie udalo sie otworzyc pliku!");
        return 1;
    } else {
        for (i = 0; i < liczbaProbek; i++) {
            fprintf(plik, "%d\n", i);
        }
        fclose(plik);
    }
    return 0;
}

Zmienne i oraz liczbaProbek nie są do niczego potrzebne, jeżeli okaże się, że pliku nie udało się otworzyć, możemy więc zadeklarować je później:

int zapiszPlik(char* nazwaPliku) {
    FILE* plik;
    plik = fopen(nazwaPliku, "r");
    if (plik == NULL) {
        printf("Nie udalo sie otworzyc pliku!");
        return 1;
    } else {
        int liczbaProbek = 10;
        int i;
        for (i = 0; i < liczbaProbek; i++) {
            fprintf(plik, "%d\n", i);
        }
        fclose(plik);
    }
    return 0;
}

Taki zabieg powinien również wpłynąć korzystnie na czytelność kodu, gdyż deklaracje zmiennych znajdą się bliżej miejsca ich użycia. Ponadto łatwiejsze staje się podzielenie programu na mniejsze funkcje.

W C++ (jak również w nowszym standardzie C) nie ma już takiego ograniczenia, zmienne możemy deklarować w dowolnych miejscach, w momentach kiedy są potrzebne.