ソースコードで完全修飾クラス名を使用する理由は何ですか?


9

私は最近、開発者がソースコードで完全修飾クラス名とインポートしたクラス名の両方を使用するコードに出くわしました。

例:

import packageA.Foo;

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

ソースコードのクラスに完全修飾名を使用したい唯一の理由は、2つの異なるパッケージに同じクラス名があり、2つを区別するために完全修飾名が必要な場合だと私は思っていました。私が間違っている?

回答:


11

いいえ、その通りです。衝突を回避する必要がある場合を除いて、完全修飾パッケージ名を使用することは、通常スタイルが悪いと見なされます。

パッケージ名が特に短くてわかりやすい場合は、修飾識別子を使用すると、コードがよりわかりやすくなります。ただし、JLS はほとんどのパッケージにドメインベースの名前を規定しているため、通常、パッケージ名は短くてわかりやすいものではありません。


(あなたが言ったように)衝突を防ぐため、私は常に完全修飾名を使用します
Joe Taras

9

もう1つの理由(衝突を除く)は、クラスが1回だけ必要な場合です。これは、クラスが共通のインターフェースを実装し、インスタンス化に実際のクラス名のみが必要な場合に特に当てはまります。完全修飾名を使用すると、一般的ではないクラスがここで使用されていること、およびその場所を見つけるのが簡単になります(適切な命名規則を想定)。

List li = new com.foobar.veryspecial.MagicList();

興味深い答え。私はすきです。
Brandon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.