Quali sono i motivi per cui si usano nomi di classi pienamente qualificati nel codice sorgente?

8

Recentemente ho trovato codice in cui gli sviluppatori hanno utilizzato nomi di classi pienamente qualificati E hanno importato nomi di classi nel loro codice sorgente.

Esempio:

import packageA.Foo;

public class Example {
    public packageB.Bar doSomething() {
        final Foo foo = new Foo();
        ...
    }
}

Ho avuto l'impressione che l'unica ragione per cui si potrebbe voler utilizzare il nome completo per le classi nel codice sorgente sia quando hanno nomi di classi identiche in due pacchetti diversi e hanno bisogno del nome completo per distinguere tra i due. Mi sbaglio?

    
posta c_maker 24.01.2012 - 04:41
fonte

2 risposte

11

No - hai perfettamente ragione. L'utilizzo di nomi di pacchetti completi è generalmente considerato di scarsa qualità, tranne quando è necessario evitare collisioni.

Se il nome di un pacchetto è particolarmente breve e descrittivo, l'uso di identificatori qualificati può rendere il codice più espressivo. Ma il JLS prescrive nomi basati sul dominio per la maggior parte dei pacchetti, di solito i nomi dei pacchetti non sono brevi e descrittivi.

    
risposta data 24.01.2012 - 05:06
fonte
9

L'altro motivo (ad eccezione delle collisioni) sarebbe se hai bisogno di una lezione solo una volta. Questo è particolarmente vero se la classe implementa un'interfaccia comune e hai solo bisogno del vero nome di classe per l'istanziazione. L'uso del nome completo rende più facile riconoscere che una classe non comune viene utilizzata qui e dove trovarla (assumendo convenzioni di denominazione sane).

List li = new com.foobar.veryspecial.MagicList();
    
risposta data 24.01.2012 - 12:02
fonte

Leggi altre domande sui tag