¿Cuáles son las razones por las que uno usaría nombres de clase totalmente calificados en el código fuente?

9

Recientemente me encontré con un código en el que los desarrolladores usaban nombres de clase totalmente calificados Y nombres de clase importados en su código fuente.

Ejemplo:

import packageA.Foo;

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

Tenía la impresión de que la única razón por la que uno podría desear usar un nombre completo para las clases en el código fuente es cuando tienen nombres de clase idénticos en dos paquetes diferentes y necesitan el nombre completo para distinguir entre los dos. ¿Me equivoco?

c_maker
fuente

Respuestas:

11

No, tienes toda la razón. El uso de nombres de paquetes totalmente calificados generalmente se considera de mal estilo, excepto cuando es necesario evitar colisiones.

Si el nombre de un paquete es especialmente breve y descriptivo, el uso de identificadores calificados puede hacer que el código sea más expresivo. Pero el JLS prescribe nombres basados ​​en el dominio para la mayoría de los paquetes, por lo que los nombres de los paquetes generalmente no son cortos y descriptivos.

Daniel Lubarov
fuente
Siempre uso el nombre completo porque evito la colisión (como dijiste)
Joe Taras
9

La otra razón (excepto las colisiones) sería si necesita una clase solo una vez. Esto es especialmente cierto si la clase implementa una interfaz común y solo necesita el nombre de clase real para la creación de instancias. El uso del nombre completo hace que sea más fácil reconocer que aquí se usa una clase poco común y dónde encontrarla (suponiendo convenciones de nomenclatura sensatas).

List li = new com.foobar.veryspecial.MagicList();
usuario281377
fuente
Respuesta intrigante. Me gusta eso.
Brandon