Est-ce une mauvaise idée d'exposer hiérarchie d'héritage dans l'espace de noms de la structure?

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

Question

J'ai un groupe de l'inter-classes associées sont toutes remplacées ensemble pour créer une mise en oeuvre particulière.Je me demande si c'est une bonne idée de joindre l'interdépendance des sous-classes dans un espace de noms.

Pour les fins de l'exemple, de considérer les espaces de noms suivants et des classes:

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 { }
}

Quelle est la meilleure façon de structurer les espaces de noms?Il semble inévitable pour exposer l'héritage dans l'espace de noms depuis les classes de base n'est pas vraiment leur place dans le Protocole.Tcp espace de noms ou le Protocole.Ftp espace de noms.

Était-ce utile?

La solution

Je pense que vous êtes peut-être trop se préoccuper!

Est-il sensé logiquement?Savez-vous où trouver votre code dans les espaces de noms?

J'aimerais beaucoup voir plutôt une base de code comme ci-dessus avec un petit nombre de classes, pertinentes pour le nom d'une hiérarchie, d'un grand espace de noms où tout est inter-relié..

Rappelez-vous, namespacing est là précisément pour cela, pour organiser votre base de code logiquement

Ce que vous avez semble logique :)

EDIT:

À titre d'exemple:

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

;)

Autres conseils

Les étiquettes originales, de montrer que ce post est sur C# - par conséquent, l'héritage multiple est une inadaptation - vous ne pouvez pas multiplier hériter en C#.

Peut-être vous devriez envisager de définir certaines interfaces qui définissent ce que la base de contrats d'une Message et un Driver et alors vous pouvez vous sentir un peu libre-er à utiliser l'espace de noms de la structure d'imiter les différences entre les technologies.

Si c'était moi, je voudrais définir 2 espaces de noms:

Protocol

et

Protocol.Driver

Divisant l'espace de noms comme ce qui sépare votre "bibliothèque de code" vs votre "exécutable / code de test." Je crée aussi mes espaces de noms pour correspondre à la structure de répertoire;il permettra de donner une logique à vos programmes de la structure et codefiles.(peut-être que vous avez déjà le faire...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top