Как различить классы MF C и пользовательские классы - PullRequest
2 голосов
/ 18 марта 2020

Я учу MF C. Если я не ошибаюсь, имена всех классов MF C начинаются с заглавной буквы "C" (например, CFrameWnd, CFile, CMenu, et c.)

Я обнаружил, что код, сгенерированный мастером Visual Studio для проекта на основе MF C, дает имена, подобные пользовательским классам. Например, если я назову свой проект "Shapes", классы, сгенерированные для проекта, будут содержать классы, такие как CShapesApp, CMainFrame, CChildView, et c.

. , у вас будет несколько классов в вашем проекте, которые могут выглядеть следующим образом: CShapesApp, CFrameWnd, CMainFrame, CWinApp, CWnd, et c.

ВОПРОСЫ: Для меня имена классов (определяемые пользователем и библиотека MF C) кажутся довольно похожими, и их трудно различить, если это пользовательский класс или класс библиотеки MF C.

  • Почему проекты на основе MF C выбирают такие соглашения об именах (например, , почему ставить "C" перед пользовательскими классами )?

  • Как я могу легко различить MF C библиотечные классы и пользовательские классы?

ОБНОВЛЕНИЕ: Я знаю, что могу изменить имена, и я уже попробовал это. Но общее соглашение состоит в том, чтобы начинать имена классов с "C" даже для пользовательских классов, и мой вопрос - почему? и как я могу легко дифференцироваться?

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Почему проекты на основе MF C выбирают такие соглашения об именах (то есть, почему ставить "C" перед пользовательскими классами)?

Невозможно ответить , По-видимому, это было обычным делом еще в начале 90-х годов. Пространства имен были добавлены в C ++ в 1995 году, то есть спустя годы после начала работы над MF C, поэтому MF C оказалась в глобальном пространстве имен. Использование префикса C для классов снижает вероятность появления символов до sh с Windows API и заголовками SDK.

Как можно легко различать классы библиотеки MF C и пользовательские классы?

MF C классы пользовательские классы. Не сразу понятно, почему вам нужно различать пользовательские классы, предоставляемые MF C, и пользовательские классы, предоставляемые вашим кодом. Если вы найдете это полезным, нет ярлыка. Вам просто нужно запомнить, какие из них принадлежат MF C.

Однако в MF C есть 2 набора классов, для которых полезно знать, в каком наборе они находятся: «оригинальные» классы и классы, представленные в Visual Studio 2008 (я считаю), которые предлагают более широкий набор функциональных возможностей. Вы можете различить guish между этими наборами, посмотрев на префикс: «оригинальные» классы начинаются с C (например, CButton), а обновленные классы имеют префикс CMFC (например, CMFCButton). ).

0 голосов
/ 23 марта 2020

Соглашение с префиксом "C" - вопрос вашего вкуса. Но напомним, что все классы, полученные из MF C, "на самом деле" являются классами MF C - в смысле наследования, означающего, что производный класс "является" также предком. Так что не забывайте, что ваш Cynd-производный CMyWnd имеет все, что есть и у CWnd. Мой личный подход к именованию (который я представил в нескольких командах разработчиков) заключается в использовании префикса "C" для всех классов, полученных из MF C, и использования другого (или даже никакого) в не-MF C - производные классы.

...