Pregunta

Estoy diseñando un espacio de nombres para contener un conjunto de clases que manejarán las tareas relacionadas con usuario para varias aplicaciones diferentes. (Iniciar sesión, autenticar, etc.)

El problema es que el espacio de nombres se llamará Fusion.User pero luego requiere una clase en ese espacio de nombres que tenga sentido llamar a Usuario .

¿Debería tener una clase con el mismo nombre que el espacio de nombres? ¿O estoy tomando el enfoque equivocado aquí?

¿Fue útil?

Solución

Tener una clase con el mismo nombre que el espacio de nombres (paquete) puede llevar a pensar que la clase es fundamental para el paquete. Pero si lo consigo correctamente, el usuario es solo un objeto de datos en su caso.

Por lo que veo, tienes 2 opciones:

  1. Nombra tu espacio de nombre de manera diferente, por ejemplo, Fusion.Security
  2. Use el sufijo para el nombre de la clase que indique su propósito, p. ej. UserDTO, UserAction etc.

Otros consejos

El espacio de nombres es Fusion.User
El nombre completo de la clase sería Fusion.User.User

Es una buena práctica mantenerlos diferentes porque

  1. Evita confusiones al desarrollador
  2. También se ve feo en algunos casos, como aquí estamos usando dos usuarios.

    usando Fusion;
    namespace xyz {
    public class test
    {
    User.User userObject {get; set;}
    }
    }
    Entonces, la mejor opción sería usar nombres diferentes

Hay casos en los que usar el mismo nombre causará problemas. Uno que se nos ocurre de inmediato es cuando se consume un servicio WCF. Cuando hice esto recientemente en una clase llamada " someBehaviour " en el espacio de nombres " companyName.someBehaviour " para consumir "MyService", el compilador me dijo diciendo que MyService no existía dentro del espacio de nombres someBehaviour. Cambiar el nombre de la clase a algo diferente (y mucho más útil) resolvió el problema y me permitió compilar el ensamblaje.

Probablemente llamaría al espacio de nombres 'usertasks' para evitar confusiones. Tendrá que calificar la clase interna usando el espacio de nombres con regularidad para evitar confundir al compilador.

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