Colección de citas famosas - Colección de máximas - ¿Qué es la nomenclatura húngara? ¿Cuáles son las reglas?

¿Qué es la nomenclatura húngara? ¿Cuáles son las reglas?

Nomenclatura húngara

La nomenclatura húngara es una convención de nomenclatura de programación. El principio básico es: nombre de variable = atributo + tipo + descripción del objeto. El nombre de cada objeto debe tener un significado claro y puede ser el nombre completo del objeto o una parte del nombre. La denominación debe basarse en el principio de ser fácil de recordar y comprender. Es muy importante garantizar la coherencia de los nombres.

Por ejemplo, si el nombre del formulario es form, se puede abreviar como frm en la nomenclatura húngara. Cuando el nombre de la variable del formulario es Switchboard, el nombre completo de la variable debe ser frmSwitchboard. De esta manera, es fácil saber por el nombre de la variable que Switchboard es un formulario. De manera similar, si el tipo de variable es una etiqueta, debe llamarse lblSwitchboard. Se puede ver que la nomenclatura húngara es muy fácil de recordar y hace que los nombres de las variables sean muy claros y fáciles de entender. Esto mejora la legibilidad del código y facilita la comunicación entre los programadores.

Esta técnica de denominación fue propuesta por un hábil programador de Microsoft, Charles Simonyi, que nació en Hungría. A las personas que trabajaron con él en Microsoft se les enseñó a utilizar esta convención. Todo esto es normal para ellos. Pero a quienes estaban fuera del equipo del proyecto dirigido por Simonyi les resultó extraño. Pensaron que era una forma de expresión rígida, e incluso dijeron que tenía una apariencia tan extraña porque estaba escrito en húngaro. A partir de entonces, este método de denominación se denominó nomenclatura húngara.

Se dice que esta nomenclatura fue inventada por un programador húngaro llamado Charles Simonyi. Posteriormente, permaneció en Microsoft durante varios años, por lo que

Esta nomenclatura fue adoptada por varios productos de Microsoft. y la documentación se difundió por todo el mundo. Hoy en día, la mayoría de los programadores utilizan esta nomenclatura más o menos sin importar qué software utilicen para el desarrollo.

El punto de partida de esta nomenclatura es combinar los nombres de las variables en el orden de: tipo de atributo

descripción del objeto, para que los programadores tengan una comprensión intuitiva del tipo de variable y otros atributos al crear variables, de la siguiente manera

Esta es la convención de nomenclatura de variables HN, algunas de las cuales son mis preferencias personales:

Parte de atributo

Variables globales

g_

Constante

c_

c Variable miembro de clase

m_

Variable estática

s_

Tipo de parte

Puntero

p

Función

fn

No válido

p>

v

Manejar

h

Largo

l

Booleano

p>

b

Tipo de coma flotante (a veces también denominado archivo)

f

Palabra doble

dw

String

sz

Short

n

Coma flotante de doble precisión

d

Conteo

c (generalmente cnt)

Carácter

ch (generalmente c)

Tipo de entero

i (normalmente n)

byte

por

palabra

w

p>

Tipo real

r

Sin firmar

u

Parte de descripción

Máximo

Máx

Mínimo

Mín

Inicialización

Inicio

Temporal variable

p>

T (o Temp)

Objeto de origen

Src

Objeto de destino

Dest

Aquí hay algunos ejemplos:

hwnd: h es una descripción de tipo, que representa un identificador, wnd es una descripción de objeto variable, que representa una ventana, por lo que hwnd representa una ventana handle;

pfnEatApple: pfn es una descripción de tipo que representa un puntero a una función, EatApple es una descripción de objeto variable, por lo que representa una variable de puntero de función que apunta a la función EatApple.

g_cch: g_ es una descripción de atributo, que representa una variable global, c y ch son el tipo de recuento y el tipo de carácter respectivamente, y juntos representan el tipo de variable

tipo, la descripción del objeto se ignora aquí, por lo que representa una variable global que cuenta caracteres.

Las anteriores son las reglas generales de la nomenclatura HN.

Resumen: nomenclatura húngara

Nomenclatura húngara

Convenciones de nomenclatura para MFC, identificadores, controles y estructuras Variables de muestra de tipo Windows Variables de muestra de clase MFC

HWND hWnd;

HDLG hDlg;

HDC hDC;

HGDIOBJ hGdiObj; ;

HPEN hPen; CPen* pPen;

HBRUSH hBrush; CBrush* pBrush;

HFONT hFont* pFont; HBITMAP hBitmap; CBitmap* pBitmap;

HPALETTE hPaltte; CPalette* pPalette;

HRGN hRgn; CRgn* pRgn; /p>

HWND hCtl; CState* pState;

HWND hCtl; CButton* pButton;

HWND hCtl; CEdit* pEdit; ; CListBox* pListBox;

HWND hCtl; CComboBox* pComboBox;

CScrollBar* pScrollBar;

p>

PUNTO pt; CPoint pt;

Tamaño de tamaño; Tamaño de CSize;

RECT rect; Ejemplo de tipo de prefijo de especificación

Clase o estructura C CDocument, CPrintInfo

m_ variable miembro m_pDoc, m_nCustomers

Ejemplo de descripción de tipo de prefijo de especificación de nomenclatura de variable

ch char carácter de 8 bits chGrade

ch TCHAR carácter de 16 bits chName si _UNICODE está definido

b BOOL booleano bEnable

n int int (su El tamaño depende del sistema operativo) nLength

n UINT valor sin signo (el tamaño depende del sistema operativo) nHeight

w WORD Valor sin signo de 16 bits wPos

l LONG Entero de 32 bits con signo lOffset

dw DWORD Entero de 32 bits sin signo dwRange

p * Puntero pDoc

lp FAR* Puntero lejano lpszName

lpsz LPSTR Puntero de cadena de 32 bits lpszName

lpsz LPCSTR Puntero de cadena constante de 32 bits lpszName

lpsz LPCTSTR Si se define _UNICODE, es un puntero de cadena de 32 bits constante

Puntero de cadena de cantidad lpszName

h identificador de objetos de Windows hWnd

devolución de llamada lpfn Puntero lejano que apunta a la función CALLBACK

Rango de instancias de tipo de símbolo de prefijo

IDR_ Múltiples identificadores de recursos compartidos de diferentes tipos IDR_MAIINFRAME 1~0x6FFF

IDD_ Recurso de diálogo IDD_SPELL_CHECK 1~0x6FFF

HIDD_ Contexto de ayuda del recurso de diálogo HIDD_SPELL_CHECK 0x20001~ 0x26FF

IDB_ Recurso de mapa de bits IDB_COMPANY_LOGO 1~0x6FFF

IDC_ Recurso de cursor IDC_PENCIL 1~0x6FFF

IDI_ Recurso de icono IDI_NOTEPAD 1~0x6FFF

ID_ Comando ID_TOOLS_SPELLING desde el elemento de menú o barra de herramientas 0x8000~0xDFFF

HID_ Contexto de ayuda del comando HID_TOOLS_SPELLING 0x18000~0x1DFFF

IDP_ Mensaje del cuadro de mensaje IDP_INVALID_PARTNO 8~0xDEEF

HIDP_ Cuadro de mensaje Contexto de ayuda HIDP_INVALID_PARTNO 0x30008~0x 3DEFF

IDS_ Recurso de cadena IDS_COPYRIGHT 1~0x7EEF

IDC_ Control en el cuadro de diálogo IDC_RECALC 8~0xDEEF

Tipo de nombre de convención de nomenclatura de macros de Microsoft MFC

_AFXDLL La única versión de biblioteca de vínculos dinámicos (Biblioteca de vínculos dinámicos, DLL)

_ALPHA Solo compila el procesador DEC Alpha

_DEBUG Incluye diagnóstico Versión de depuración

_MBCS Compilar conjunto de caracteres multibyte

_UNICODE Abrir Unicode en una aplicación

Función AFXAPI proporcionada por MFC

CALLBACK Función de devolución de llamada a través del puntero

Biblioteca nomenclatura del identificador valor y significado del identificador

u ANSI (N) o Unicode (U)

d Depuración o lanzamiento: D = depurar; ignorar el identificador para el lanzamiento.

Descripción de la biblioteca de convención de nomenclatura de la versión de la biblioteca estática

Versión de depuración de NAFXCWD.LIB: biblioteca de enlaces estáticos MFC

Versión de lanzamiento de NAFXCW.LIB: biblioteca de enlaces estáticos MFC

p> p>

UAFXCWD.LIB Versión de depuración: biblioteca de enlaces estáticos MFC con soporte Unicode

UAFXCW.LIB Versión de lanzamiento: biblioteca de enlaces estáticos MFC con soporte Unicode

Biblioteca de enlaces dinámicos Tipo de nombre de especificación de nomenclatura

_AFXDLL La única versión de biblioteca de vínculos dinámicos (DLL)

Funciones WINAPI proporcionadas por Windows

Nuevo tipo de especificación de nomenclatura en Windows.h Descripción de la definición

WINAPI usa la posición FAR PASCAL en la declaración de API. Si está escribiendo una DLL que tiene un punto de población de API exportado, puede usar este tipo en su propia ubicación de API.

CALLBACK. de FAR PASCAL usado en rutinas de devolución de llamada de aplicaciones, como procedimientos de ventana y diálogo

LPCSTR es el mismo que LPSTR, excepto que LPCSTR se usa para punteros de cadena de solo lectura y su definición es similar (const char FAR * )

UINT Un tipo entero portátil sin signo cuyo tamaño está determinado por el entorno del host (32 bits para Windows NT y Windows 9x es sinónimo de int sin signo

LRESULT); El tipo de valor de retorno del programa de ventana

LPARAM declara el tipo utilizado por lParam, lParam es el cuarto parámetro del programa de ventana

WPARAM declara el tipo utilizado por wParam, wParam es El tercer parámetro del programa de ventana

LPVOID es un tipo de puntero general, igual que (void *), y se puede usar en lugar de LPSTR