Re: Преимущества NVI в C++ (non virtual interface)
От: IROV..  
Дата: 29.04.06 13:16
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>1. Неубедительная мотивация для использование NVI.


Для меня убедительная..

сравним.

это:
class A
{
    virtual void Foo()
    {
        if(enable ==  false)
        { 
            Log << "Blah-Blah" << endl;
        }

        //TODO:

    }
};

class B
    : public A
{
    void Foo()
    {
        if(enable ==  false)
        { 
            Log << "Blah-Blah" << endl;
        }

        //TODO:
    }
};

с вот этим:
class A
{
    void Foo()
    {
        if( enable ==  false)
        { 
            Log << "Blah-Blah" << endl;
        }

        _Foo();
    }

    virtual void _Foo()
    {
        //TODO:
    }
};

class B
    : public A
{
    void _Foo()
    {
        //TODO:
    }
};






+ Возможность создания префикса и постфикса к функции
+ Легко менять(сопровождать) префикс/постфикса при этом не боясь забыть гдето поменять.
+ Меньше кода! а значит меньше проблем на сопровождение.
+ Помогает избежать ошибок (забытые юзером проверки), если нужна обязательная валидация.

— Ущемляет права юзера на ликведацию пре/пост-фикса (может это и к лучему)

P.S. знаю _Foo писать не безопастно (чертов STL ).. просто для наглядности
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.