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?

1voto

Leo Orientis Punkte 597

Vergessen Sie überladene Namespaces... Und denken Sie an die arme Seele, die Ihren Code auf GitHub, in vi, Notepad++ oder einem anderen Nicht-IDE-Texteditor lesen und verstehen muss.

Diese Person muss mühsam jedes Token, das von einem der Platzhalter stammt, mit allen Klassen und Referenzen in jedem Platzhalterbereich abgleichen... nur um herauszufinden, was überhaupt los ist.

Wenn Sie den Code nur für den Compiler schreiben - und Sie wissen, was Sie tun -, gibt es sicher kein Problem mit Platzhaltern.

Aber wenn andere Leute - auch Sie in der Zukunft - eine bestimmte Codedatei beim Lesen schnell verstehen wollen, dann sind explizite Verweise sehr hilfreich.

-1voto

Testilla Punkte 432

Das Importieren aller Klassen in einem Paket wird als blinder Ansatz betrachtet. Ein wichtiger Grund dafür ist, dass dadurch der Klassennamensraum unübersichtlich wird und es zu Konflikten zwischen Klassen in verschiedenen Paketen mit demselben Namen kommen kann.

Durch das gezielte Auffüllen der erforderlichen Klassen wird dieses Problem vermieden und es wird deutlich, welche Versionen gewünscht wurden. Dies ist gut für die Wartbarkeit des Codes.

-1voto

Amit Punkte 107

Die Verwendung von Wildcard-Importen ist nicht schlecht, da die Java-Tutorials von Oracle Wildcard-Importe verwenden. Ich glaube nicht, dass die Java-Leute bei Oracle etwas Falsches tun würden.

Bitte schauen Sie hier: https://docs.oracle.com/javase/tutorial/uiswing/examples/components/CustomComboBoxDemoProject/src/components/CustomComboBoxDemo.java

Das obige Programm verwendet Wildcard-Importe:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

Weitere Programme können Sie sich hier ansehen: https://docs.oracle.com/javase/tutorial/uiswing/examples/components/ .

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