Me encontré con un "problema interesante", sobre el cual me gustaría su opinión:
Estoy desarrollando un sistema y por muchas razones (es decir, abstracción, independencia tecnológica, etc.) creamos nuestros propios tipos para intercambiar información.
Por ejemplo: si hay un método que se llama SendEmail y es invocado por la lógica de negocios, tiene un parámetro de tipo OurCompany.EMailMessage, que es un objeto que es completamente independiente de la tecnología y contiene solo "datos relevantes para el negocio" (para instancia, no hay información sobre la codificación de la cabeza).
Dentro de la función SendEmail, obtenemos esta información de nuestro objeto EMailMEssage y creamos un objeto MailMessage (este es específico de la tecnología) para que pueda enviarse a través de la red.
Como ya puede notar, nuestra clase tiene un nombre muy similar a la clase de idioma "nativo". El problema es: esto es exactamente lo que son, mensajes de correo electrónico, por lo que es difícil encontrar otro nombre significativo para ellos.
¿Tienes este problema a menudo? ¿Cómo lo manejas?
Editar: @mgkrebbs acaba de comentar sobre el uso de nombres completos. Este es nuestro enfoque actual, pero un poco demasiado detallado, en mi humilde opinión. Me gustaría algo más limpio, si es posible.
fuente
Respuestas:
Este es un problema sobre el espacio de nombres que va a utilizar para su proyecto.
Básicamente, un espacio de nombres es la colección de palabras clave proporcionadas por todas sus clases y / o todas las clases que desea usar en su proyecto (incluidas las clases estándar que generalmente se proporcionan con el idioma / compilador / IDE).
Dado que un espacio de nombres es una colección, básicamente se aplican algunas reglas para evitar la creación de un desorden de términos sin ningún comportamiento relacionado, y algunos lenguajes como C # también le permiten definir su propio espacio de nombres como de costumbre y también usarlo en otras clases.
No confunda el espacio de nombres con la palabra clave básica del idioma, ambos son una colección de palabras clave pero con una gran diferencia entre los dos: puede modificar un espacio de nombres pero generalmente no puede modificar las palabras clave básicas de un idioma. La suma entre el espacio de nombres que ha utilizado en su proyecto y las palabras clave básicas del idioma que utiliza le proporciona la cantidad total de palabras clave.
El tema es muy discutido en la red, puedo sugerir una búsqueda básica con los términos "espacio de nombres [su idioma]" o algo así. No estoy respondiendo directamente a su pregunta simplemente porque puede tener un enfoque diferente para diferentes idiomas.
fuente
Bueno, mi antiguo equipo de desarrollo solía agregar el acrónimo de la aplicación en cada clase personalizada. Tuvimos, por ejemplo, la clase ABCEmail .
Creo que es más sencillo que confiar en el espacio de nombres, pero también puede ser una solución complementaria al uso del espacio de nombres.
Por último, pero no menos importante, ya que está creando un nuevo objeto, significa que el objeto nativo no responde a sus necesidades, por lo que su nombre de su archivo de correo electrónico podría ser CustomizedEmail , AdvancedEmail ... etc.
fuente
OAEmail
mejor queOurApplication.Email
?OAEMail
tiene un impacto en cada parte del software, mientras que la notación del espacio de nombres solo tiene un impacto allí donde ocurre la conversión y ambas clases se usan en el mismo archivo fuente.Qué idioma estás usando? La respuesta es específica del idioma. En general, la respuesta es 'usar espacios de nombres'. Casi nunca destrozaría el nombre del tipo para evitar un conflicto con algún espacio de nombres externo.
En una sola aplicación Java, es bastante común tener el mismo nombre de clase (por ejemplo, "Fecha") definido en media docena de espacios de nombres. Si una clase necesita usar dos clases de Fecha separadas, entonces una de las clases de Fecha debe estar completamente calificada en todas partes, ya que Java no admite alias de tipo. En C ++ la vida es más fácil; puedes cambiar el nombre de uno de ellos con typedef.
fuente
Realmente depende del idioma que uses. En c ++ y java, este problema se resuelve utilizando espacios de nombres. Estoy usando c ++, y sucede que obtuve diferentes clases con el mismo nombre. No es un problema, ya que están en diferentes espacios de nombres.
En otros idiomas, no hay formas de evitarlo, sino proporcionar nombres diferentes.
fuente
xyz123
y aún funciona igual. No veo otra forma de decir en detalle (usted dijo en los comentarios que está tratando de evitarlo).Tu pregunta es muy buena. ¿Qué tal si prefijas tu método con un prefijo como U (uu) o cls (abreviatura de clase)? Por ejemplo:
clsEMailMEssage o uEMailMEssage
Esto no requiere mucho tipeo e inmediatamente se nota que el tipo es 'suyo'.
Editar - En respuesta a los primeros 2 comentarios:
Me gustaría señalar la atención del lector al hecho de que: No todas las anotaciones húngaras se crean de la misma manera. Deberíamos distinguir entre Sistema húngaro y Aplicaciones húngaras , supongo que la sugerencia anterior sigue el tipo de Aplicaciones húngaras, que no es dañino.
El daño asociado con la notación húngara del sistema, como nombrar una ID como intID, no está presente en la sugerencia anterior.
Para obtener más información sobre esto, eche un vistazo a: Hacer que el código incorrecto parezca incorrecto - Joel On Software
fuente