Thursday, November 17, 2011

using namespace

Есть хорошая книга котрую я давно читал – «Стандарты программирования на C++ 101 правило и рекомендация» Герб Саттер, Андрей Александреску. Там была вот такая рекомендация №59: «Не используйте using для пространств имен в заголовочных файлах или перед директивой #include». И вот я заметил, что в коде сгенеренным мастером ATL используется using namespace в *.h:

...
using namespace ATL;

// CNoNamePreview
class ATL_NO_VTABLE CNoNamePreview :
    public CComObjectRootEx< CComSingleThreadModel >,
    public CComCoClass< CNoNamePreview, &CLSID_NoNamePreview >,
    public IObjectWithSiteImpl< CNoNamePreview >,
...

Вроде ничего такого, т.к. этот хедер дальше нигде не должен включатся. Но как-то непривычно что-ли. То что выше относится к MSVS2010sp1, а вот так делал мастер в MSVS2008sp1:

// stdafx.h
...
#define _ATL_NO_AUTOMATIC_NAMESPACE
...
using namespace ATL;
...

No comments:

Post a Comment