2011-12-13 15 views
12

En mi proyecto tengo un paquete shapes que tiene formas que diseñé para mi programa de gráficos, por ejemplo, Rectángulo, Círculo. También tengo uno o dos paquetes más que tienen los mismos nombres que las clases java.awt.Demasiadas importaciones enviando correo no deseado a mi código

Ahora, ya no quiero cambiar el nombre de todas las clases en mi base de código, para mostrar mis archivos de origen que la clase me refiero cuando, por ejemplo, declarar un nuevo rectángulo, necesito ya sea:

1- importación la clase rectángulo explícitamente, es decir, shapes.Rectangle importación

O

2- importación sólo las clases java.awt que necesito y no importan java.awt. * que incluye automáticamente el awt.Rectangle

Ahora el problema es que ambas formas resultar en una gran cantidad de importación, actualmente tengo un promedio de 15-25 importaciones en cada archivo de origen, que se ve seriamente haciendo mi código mezclado en marcha y confuso.

¿Demasiadas importaciones en su código son malas? ¿Hay alguna forma de evitar esto?

Respuesta

9

Sí, demasiadas importaciones es una mala cosa porque desordena su código y hace que sus importaciones sean menos legibles.

Evite largas listas de importación mediante el uso de comodines.

Kevlin Henney habla de esta cuestión exacta de desbordamiento de pila en su presentación 27:54 Clean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks de NDC Londres 16-20 Ene 2017

+1

De acuerdo con https://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a-java-import-statement-bad?noredirect=1&lq=1 esto es malo porque desorienta y potencialmente confunde tus espacios de nombres. –

+1

También es una pesadilla lidiar con conflictos de fusión justo en la sección de importación, debido al colapso en * después de tocar un umbral o una expansión cuando se usan menos importaciones. – Hurda

2

En el mundo Java es normal tener muchas importaciones: realmente necesita importar todo. Pero si usa IDE como Eclipse, hace las importaciones por usted.

3

Otra alternativa es escribir el nombre completo de la clase como lo necesite. En mi ejemplo, hay 2 Element objeto, uno creado por mí org.opensearch.Element y el otro org.w3c.dom.Element.

Para resolver conflicto de nombres, así como para reducir al mínimo la importación "estorba", he hecho esto (en mi clase org.opensearch.Element):

public org.w3c.dom.Element toElement(org.w3c.dom.Document doc) { /* .... */ } 

Como se puede ver, el tipo de retorno es Element integración global mecanografiado (es decir, he especificado el nombre de la clase totalmente calificado de Element).

¡Problema resuelto! :-)

5
  • Es una buena práctica para importar clase por clase en lugar de importar paquetes enteros

  • Cualquier buen IDE, como Eclipse , se colapsará las importaciones en una línea, y que pueda amplíelos cuando sea necesario, para que no atemperen su vista

  • En caso de conflicto, siempre puede consultar las clases completas, pero si una de las dos está bajo su control, puede considerar cambiarle el nombre. (con Eclipse, haga clic con el botón derecho en la clase, elija Refactor -> Rename, se ocupará de actualizar todas sus referencias).

  • Si su clase está importando de AWT y de su paquete de formas, está bien. Está bien importar de varias clases; sin embargo, si se encuentra importando de muchas fuentes dispares, podría ser una señal de que su clase está haciendo demasiado y debe dividirse.
+0

Esta respuesta no contiene ningún argumento de por qué es mejor usar las importaciones explícitas más comodines , pero solo establece que "los IDE lo hacen menos doloroso", es decir, tratar el síntoma, en lugar de la causa. Es por eso que decidí rechazar esta respuesta. – Qqwy

Cuestiones relacionadas