Es una mala idea para exponer la jerarquía de herencia en el espacio de nombres de la estructura?

StackOverflow https://stackoverflow.com/questions/18608

Pregunta

Tengo un grupo de inter-clases relacionadas que son todos reemplazado juntos para crear una implementación particular.Me pregunto si es una buena idea para incluir la interrelación de subclases en un espacio de nombres.

Para fines de ejemplo, considere los siguientes espacios de nombres y clases:

namespace Protocol
{
  public abstract class Message { }
  public abstract class Driver { }
}
namespace Protocol.Tcp
{
  public class TcpMessage : Message { }
  public class TcpDriver : Driver { }
}
namespace Protocol.Ftp
{
  public class FtpMessage : Message { }
  public class FtpDriver : Driver { }
}

¿Cuál es la mejor manera de estructurar los espacios de nombres?Parece inevitable para exponer la herencia en el espacio de nombres desde la base de las clases no pertenecen realmente en el Protocolo.Tcp espacio de nombres o el Protocolo.Ftp espacio de nombres.

¿Fue útil?

Solución

Yo creo que son tal vez de preocuparse demasiado!!!

¿Tiene sentido lógico?¿Sabe dónde encontrar el código dentro de los espacios de nombres?

Me gustaría mucho ver un código como el de arriba con un pequeño número de clases, relevantes para el nombre de una jerarquía, de un gran espacio de nombres donde todo está interrelacionado..

Recuerde, namespacing es allí precisamente para esto, para organizar su código base, lógicamente,

Lo que tienes parece lógico :)

EDITAR:

Como un ejemplo:

using System.Data;
using System.Data.Sql;

;)

Otros consejos

Las etiquetas originales muestran que este post es sobre C#, por tanto, la herencia múltiple es una impertinencia - usted no se puede multiplicar heredar en C#.

Tal vez usted debería considerar la posibilidad de definir algunas interfaces que definen lo que los contratos básicos de un Message y un Driver y entonces usted puede sentir un poco de free-er a utilizar el espacio de nombres de la estructura para imitar la tecnología de las diferencias.

Si este fuera yo, me gustaría definir a 2 espacios de nombres:

Protocol

y

Protocol.Driver

Dividiendo el espacio de nombres como esta se separa de su "código de la biblioteca" frente a su "ejecutable / código de prueba." Yo también crear mis espacios de nombres para que coincida con la estructura de directorios;va a dar a la lógica de los programas de la estructura y codefiles.(tal vez usted ya no esta...)

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