Правила программирования на Си и Си++

       

Используйте счетчик экземпляров объектов вместо инициализирующих функций


Инициализирующие функции, с очевидным исключением в виде конструкторов Си++, не должны использоваться просто потому, что слишком просто забыть их вызвать. Многие системы с оконным интерфейсом, например, требуют, чтобы вы вызывали функцию инициализации окна перед его созданием (и другую — закрытия — после удаления последнего окна). Это плохая идея. Уладьте эту проблему при помощи счетчика экземпляров, который обычно в Си должен быть глобальной переменной (объявленной статической для ограничения области ее видимости). Сделайте это так:

static int

num_windows = 0; // ограничьте доступ к текущему

                            //

модулю

create_window()

{

if( ++num_windows == 1 ) // только что создано первое окно

    initialize_video_system();

// ...

}

destroy_window()

{

    // ...

    if( --num_windows == 0 )      // только что уничтожено

        shutdown_video_system();  // последнее

окно

}

В Си++ вы можете для этой цели использовать статический член класса.



Содержание раздела