2009-07-21 11 views
17

Con frecuencia tengo conflictos de nombres entre un espacio de nombres y una clase dentro de ese espacio de nombres y me gustaría conocer una mejor práctica para manejar esto cuando parece tener sentido usar estos nombres en primer lugar, además de agregar prefijos aleatorios.¿Cómo evitar tener el mismo nombre para una clase y su espacio de nombres, como Technology.Technology?

Parecía tener sentido tener un espacio de nombres Models.Technology, con docenas de clases de tecnología (es decir, armas, tecnología agrícola, reciclaje) y algunas interfaces relacionadas en él. También decidí tener una clase abstracta de Tecnología, en el espacio de nombres de Tecnología, del cual derivan todas las tecnologías.

Sin embargo, esto me obliga a usar un código como éste:

public Technology.Technology research(Technology.Technology tech) {...} 

y del mismo modo:

public Building.Building build(int count) {...} 

Por cierto, no me dio el nombre de mis Tecnologías de espacio de nombres desde que uso ese término en otros lugares un contenedor para una lista de tecnologías disponibles ...

+0

Me gustaría cambiar el nombre de su lista de las Tecnologías de 'TechnologyList', e ir a por' Technologies.Technology'. –

Respuesta

18

Sin indicaciones más precisas sobre cuándo se encuentra con este problema, es difícil darle un consejo general.

Pero supongo que tienes este problema cuando tienes una clase base en tu espacio de nombres, con otras clases heredadas de ella. Si ese es el caso, podría llamar a su clase BaseTechnology (clase base) o AbstractBuilding (clase abstracta) o IAnimal (interfaz). Esto incluso le da más claridad ya que especifica en el nombre de su tipo algo importante al respecto.

1

Bueno, si su nombre de los espacios de nombres por el estilo ns MyNamespace o que se nombre de la clase c MyClasse. Personalmente estoy a favor de nombrar el espacio de nombres, porque no es algo que uses mucho en el código.

También puede usar TechnologyBase o AbstractTechnology para nombrar su clase abstracta principal que entra en conflicto con el nombre de su espacio de nombres, que es lo que recomiendo para mantener la convención de nomenclatura más lógica.

1

Un colapso general es nombrar su espacio de nombres "Entidades" o algo así.

0

Otra solución, simplemente llame al espacio de nombres después del nombre de la empresa para la que está trabajando.

+1

No creo que esto funcione porque estoy hablando de la última palabra del espacio de nombres. ej .: Microsoft.Stuff.Technology. Y aquí la Tecnología entra en conflicto con una clase abstracta de Tecnología. –

+0

En realidad, usted podría/debería prefijar todos sus espacios de nombres con su nombre de empresa, pero eso no resuelve el problema. –

-1

¿Qué hay de Technology.Tech

o:

HumanBeing.Human

o:

CocaCola.Coke?

Lo que me gusta hacer es tener una regla simple. Donde utilizo las dos primeras letras de una palabra, seguido de las dos últimas letras de esa palabra como:

Technology.Tegy

Puede que no tiene ningún sentido, pero debido a que la misma regla se aplica siempre, significa menos confusión, y no hay necesidad de recordar mucho, excepto por esa única regla. Esta es solo mi preferencia.A mí, me gusta que las cosas parezcan crípticas, así que si ese no es tu estilo, entonces tal vez esta respuesta no sea para ti.

espero que esto ayude ... Al menos un poco ... :)

+1

No tienes gusto .... – Denis

Cuestiones relacionadas