IntelliJ IDEAでは、インポートをワイルドカードにまとめる設定がある。
設定のやり方は
IntelliJのリファレンスへGO
先日、OSSのコミッターを行っている際にレビューで指摘されて、プライベートのPCでワイルドカードインポート設定になってしまっていたため、
下記にIntelliJ IDEAの
【インポートをワイルドカードにまとめる設定】
について、自分が思う避けるべき理由とメリットを記載しようと思う。
ワイルドカードインポートを避けるべき理由
読みやすさの低下
ワイルドカードを使用すると、どのクラスが実際に使用されているのかが不明確になる。
特に大規模なコードベースでは、同じ名前のクラスが異なるパッケージに存在する場合があり、どのクラスがインポートされているのかがわからず、混乱を招く可能性がある。
静的解析やコード補完の問題
IDEの静的解析やコード補完の機能は、明示的なインポートがあることで最適に機能する。
ワイルドカードを使用すると、これらの機能が正しく動作しない場合があり、
コードの理解や保守性に影響を与えることがある。
リファクタリングの困難さ
明示的なインポートがないと、クラスのリファクタリング(名前変更や移動など)が困難になる。
特にIDEを使用して自動的にリファクタリングする場合、ワイルドカードインポートは正確なリファクタリングを妨げることがある。
競合のリスク増加
ワイルドカードインポートを使用すると、インポートされるクラスが不明確になり、パッケージ間で名前が競合するリスクが高まる。これにより、コンパイルエラーや予期しない動作が発生する可能性がある。
依存関係の可視性が低下
ワイルドカードインポートを使用すると、コードが依存している具体的なクラスが見えにくくなり、コードの理解やレビューが難しくなる。特に新しいチームメンバーがコードを読むときに障害となることがある。
個人的には、共同開発時に非常にネックになる印象
ワイルドカードインポートのメリット
インポートの簡潔さ
多くのクラスを同じパッケージからインポートする場合、ワイルドカードインポートはコードを簡潔に保ち、インポートステートメントの行数を減らすことができる。
これにより、コードが少し短く見えて視覚的にシンプルになる。
クリーンな見た目
インポートリストが長くなると、クラスファイルの先頭部分が雑然として見えることがある。ワイルドカードを使用することで、これを軽減し、インポート部分がクリーンに見えるようになる。
一定のコードスタイルやポリシーへの準拠
一部のプロジェクトやチームでは、スタイルガイドとしてワイルドカードインポートを許可または推奨している場合がある。
この場合、ワイルドカードインポートを使用することで、プロジェクトの一貫性を保つことができる。
メンテナンスの簡易化
同じパッケージから複数のクラスを頻繁に追加・削除する場合、ワイルドカードインポートを使用すると、インポート文を個別に追加・削除する必要がなくなる。
これにより、特に大規模なリファクタリングの際にメンテナンスが少し楽になる。
パフォーマンスへの影響がない
一部の人が懸念することとして、「ワイルドカードインポートはパフォーマンスに悪影響を及ぼす」と誤解されることがあるが、コンパイル済みのバイトコードには影響しない。
ワイルドカードインポートはコンパイル時の問題であり、実行時のパフォーマンスには影響は与えない。
まとめ
IntelliJ IDEAでインポートをワイルドカードにまとめる設定には、簡潔さや見た目のクリーンさなどのメリットがあるが、読みやすさやリファクタリングの困難さ、依存関係の可視性の低下などのデメリットも存在する。
プロジェクトの規模やチームのポリシーに応じて、
どちらの設定を採用するかを慎重に検討することが重要。
要はプロジェクトの郷に入っては郷に従えということでmm