Информация об изменениях

Сообщение Re: вопрос от 08.08.2015 16:10

Изменено 08.08.2015 16:13 Pavel Dvorkin

Здравствуйте, another_coder, Вы писали:

А почему не применить следующий подход : методы являются private, если нет

#define TEST

иначе они public ?

Тесты могут спокойно их тестировать, вызвать их в production, где не положено, не удастся.

// TEST определен в свойствах проекта
    class C {
#if( TEST)
        public
#else
        private
#endif
        static void f() { }
    }
    class Program
    {
        static void Main(string[] args)
        {
            C.f();
        }
    }


В С++ можно и элегантнее написать

#ifdef TEST
#define ACCESS_LEVEL public:
#else
#define ACCESS_LEVEL private:
#endif

class C {
    ACCESS_LEVEL static void f() {}
};

int _tmain(int argc, _TCHAR* argv[])
{
    C::f();
    return 0;
}
Re: вопрос
Здравствуйте, another_coder, Вы писали:

А почему не применить следующий подход : методы являются private, если нет

#define TEST

иначе они public ?

Тесты могут спокойно их тестировать, вызвать их в production, где не положено, не удастся.

// TEST определен в свойствах проекта
    class C {
#if( TEST)
        public
#else
        private
#endif
        static void f() { }
    }
    class Program
    {
        static void Main(string[] args)
        {
            C.f();
        }
    }


В С++ можно и элегантнее написать

#ifdef TEST
#define ACCESS_LEVEL public
#else
#define ACCESS_LEVEL private
#endif

class C {
    ACCESS_LEVEL : 
static void f() {}
};

int _tmain(int argc, _TCHAR* argv[])
{
    C::f();
    return 0;
}