595 Stimmen

Warum ist die Verwendung eines Platzhalters in einer Java-Import-Anweisung schlecht?

Es ist viel bequemer und sauberer, eine einzige Anweisung zu verwenden wie

import java.awt.*;

als eine Reihe von einzelnen Klassen zu importieren

import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Canvas;
...

Was ist falsch an der Verwendung eines Platzhalters in der import Aussage?

28voto

hazzen Punkte 16604

Dadurch wird Ihr Namespace unübersichtlich, und Sie müssen alle mehrdeutigen Klassennamen vollständig angeben. Das häufigste Vorkommen dieser Art ist mit:

import java.util.*;
import java.awt.*;

...
List blah; // Ambiguous, needs to be qualified.

Es hilft auch dabei, Ihre Abhängigkeiten zu konkretisieren, da alle Ihre Abhängigkeiten am Anfang der Datei aufgelistet werden.

27voto

Josh Segall Punkte 3933
  1. Es hilft, Klassennamenkonflikte zu erkennen: zwei Klassen in verschiedenen Paketen, die denselben Namen haben. Dies kann mit dem * import maskiert werden.
  2. Es macht Abhängigkeiten explizit, so dass jeder, der Ihren Code später lesen muss, weiß, was Sie importieren wollten und was nicht.
  3. Dies kann die Kompilierung beschleunigen, da der Compiler nicht das gesamte Paket durchsuchen muss, um Abhängigkeiten zu erkennen, obwohl dies bei modernen Compilern normalerweise keine große Rolle spielt.
  4. Die lästigen Aspekte expliziter Importe sind bei modernen IDEs auf ein Minimum reduziert. Die meisten IDEs ermöglichen es Ihnen, den Importbereich auszublenden, damit er nicht im Weg ist, Importe bei Bedarf automatisch aufzufüllen und ungenutzte Importe automatisch zu identifizieren, um sie zu bereinigen.

In den meisten Unternehmen, in denen ich gearbeitet habe und die Java in nennenswertem Umfang einsetzen, gehören explizite Importe zum Codierungsstandard. Ich verwende manchmal noch * für schnelles Prototyping und erweitere dann die Importlisten (einige IDEs tun dies auch für Sie), wenn ich den Code produktiv mache.

12voto

Jeff C Punkte 435

Ich bevorzuge spezifische Importe, weil ich so alle in der Datei verwendeten externen Verweise sehen kann, ohne mir die gesamte Datei ansehen zu müssen. (Ja, ich weiß, dass dabei nicht unbedingt vollqualifizierte Verweise angezeigt werden. Aber ich vermeide sie, wann immer es möglich ist.)

11voto

Ivan Punkte 1124

Unter DDD-Buch

Unabhängig von der Entwicklungstechnologie, auf der die Implementierung basieren wird, sollten Sie nach Möglichkeiten suchen, die Arbeit der Refaktorierung von MODULEN zu minimieren. In Java kommt man nicht umhin, in einzelne Klassen zu importieren, aber man kann aber man kann zumindest ganze Pakete auf einmal importieren, was die Absicht widerspiegelt, dass Pakete sehr zusammenhängende Einheiten sind und reduziert gleichzeitig den Aufwand für die Änderung von Paketnamen.

Und wenn es den lokalen Namespace verstopft, ist es nicht Ihre Schuld - schieben Sie es auf die Größe des Pakets.

10voto

Michael Hall Punkte 135

Bei einem früheren Projekt habe ich festgestellt, dass der Wechsel von *-Importen zu spezifischen Importen die Kompilierungszeit um die Hälfte reduziert hat (von etwa 10 Minuten auf etwa 5 Minuten). Der *-Import veranlasst den Compiler, jedes der aufgelisteten Pakete nach einer Klasse zu durchsuchen, die der von Ihnen verwendeten Klasse entspricht. Diese Zeit kann zwar gering sein, aber bei großen Projekten summiert sie sich.

Ein Nebeneffekt des *-Imports war, dass die Entwickler allgemeine Importzeilen kopierten und einfügten, anstatt darüber nachzudenken, was sie brauchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X