Pregunta

El MFC tiene todos los nombres de las clases que comienzan con C. Por ejemplo, CFile y CGdiObject. Ha visto a nadie se utiliza en otros lugares? ¿Hay una guía de convención de nomenclatura oficial de Microsoft que recomienda este estilo? Surgió la idea se originó con MFC o era algún otro proyecto?

¿Fue útil?

Solución

Algo se utiliza un poco similar en Symbian C ++, donde la convención es que:

clases T son "valores", por ejemplo TCHAR, TInt32, TDES

R son clases asas para kernel (u otros) los recursos, por ejemplo FICH_R, RSocket

clases M son mixins, que incluye interfaces (interpretarse como mixins sin implementaciones de función). La directriz es que la herencia múltiple debe involucrar a más de clase 1 no-M.

clases de C son casi todo lo demás, y se derivan de CBase, que tiene algunas cosas en él para ayudar con los recursos de manipulación.

HBufC existe principalmente para generar mensajes confusos en los foros de Symbian, y que tiene su propio prefijo es sólo el comienzo. La H representa "¿eh?", O posiblemente "Haw, Haw! No tienes STL!" ; -)

Esto está cerca en espíritu a Aplicaciones húngaro Notación en lugar de sistemas de notación húngara. El prefijo que dice algo sobre la clase que usted podría mirar hacia arriba en la documentación, pero que no sabrías lo contrario. El punto de nombrar a cualquier cosa en la programación es proporcionar tales consejos y recordatorios , de lo contrario usted acaba de llamar a sus clases "Class001", "Class002", etc.

Sistemas de Hungría sólo le dice el tipo de una variable, que la OMI es nada para conseguir muy entusiasmados, sobre todo en un lenguaje como C ++ tipos donde tienden a ser repetida constantemente o bien completamente oculto por los parámetros de plantilla. Su análogo al nombrar los tipos de Java es la práctica de nombrar a todas las interfaces con I. Una vez más, no me siento muy emocionado por esta (y tampoco lo hacen las bibliotecas estándar de Java), pero si usted va a definir una interfaz para todas las clases , además de las interfaces que se utilizan actualmente para el polimorfismo en situaciones que no son de prueba, entonces usted necesita alguna manera de distinguir entre los dos.

Otros consejos

Es el mal. No utilice la notación húngara para nada más que cosas abstractas.

Por ejemplo, btnSubmit es aceptable para describir un botón llamado Presentar (lo cual tendría un lblSubmit de acompañamiento para la etiqueta junto al botón)

Pero cosas como CMyClass para la clase y uiCount por entero sin signo llamado recuento no ayuda a los programadores y solo conduce a un desperdicio de escribir extra.

Esa fue una antigua C ++ estilo de codificación, y MFC fue probablemente una de las últimas cosas para utilizarlo.

Por lo general, era simplemente una convención de C ++ (y quizás algunos otros idiomas), y por lo tanto comenzó a caer en desgracia como las lenguas se volvieron más interoperable, a través de COM y .NET.

Aún puedes ver que es primo, el prefijo "I" para las interfaces, bastante a menudo. Siempre me ha parecido interesante que "I" cuando sobreviví "C" murió, pero que era probablemente debido a que las interfaces se utilizaron tan fuertemente en la interoperabilidad COM.

Me acuerdo compiladores de Borland venían con las bibliotecas, donde los nombres de clases comenzaron con 'T'. Probablemente por "tipo":)

Hace

Años convención de nomenclatura es crucial para ayudar a la identificación de la clase, incluso el tipo de la agrupación de la clase. No se olvide aquel entonces no había ningún espacio de nombres y intelisense / limitado disponible. C es una forma de notación húngara, pero ciertamente hizo popular por MFC. Borland Delphi y estaba usando T - como prefijo para Tipo

Mientras MFC y un montón de software escrito para Windows utilizan la convención "C" para las clases, por lo general, no encuentra este último en software escrito para plataformas UNIX. Creo que era un hábito muy estimulada por Visual C ++. Recuerdo que Visual C ++ 6.0 sería el prefijo "C" a las clases que se crean con el asistente de clase.

No puedo responder a todas sus preguntas, pero por lo que yo sé, es sólo para distinguir las clases MFC de otras clases -. Una forma de notación húngara

Es interesante que al parecer es controvertido no sólo fuera de la EM, pero el interior, así .

Vea aquí: http://www.jelovic.com/articles/stupid_naming.htm por un largo artículo sobre este tema.

Estas convenciones para las variables son útiles para lenguajes como Fortran en los que no es necesario declarar los tipos de las variables antes de usarlas. Me parece recordar que las variables quién es nombres comenzaron con "i" o "j" por defecto en números enteros, y las variables quién es nombres comenzaron con "r" y otras letras en mora con los valores reales (float).

que usa la gente similar para los idiomas en los que usted necesita para declarar variables - o para las definiciones de clase -. Es probable que sólo un vestigio de alguien malentendido las viejas convenciones de código de lenguajes como Fortran donde realmente importaba

Al escribir aplicaciones que utilizan las bibliotecas Qt, se utiliza una convención de nombres que distingue a las clases que se derivan directa o indirectamente de QObject de clases que no son. Esto es útil porque se puede decir del nombre de la clase si es o no compatible con las señales / ranuras, propiedades y todas las otras cosas que vienen de QObject.

lo usamos en el trabajo, al igual que muchas otras convenciones de nombres

por muchos que significaba para las clases C, P para el puntero, m_ para los miembros, s_ para los miembros estáticos, para n entero ... no muchos documentos

personalmente me parece que la notación húngara me ayuda, en la que puedo mirar a una pantalla completa de variables y de inmediato saber lo que son mientras trato y absorber la lógica. Su único argumento en contra que veo es "tipificación extra"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top