[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1432] import 宣言はどっ ちのスタイルがよいか



高橋(徹)です。

import宣言の書き方には2種類あります。
(1) 単独の型インポート宣言(FQCNでimportするクラス名を指定)
(2) オンデマンド型インポート宣言(*でパッケージのすべてのpublic型を
  必要に応じてインポート)

"Writing Robust Java Code"では(1)を勧めています。
http://www.ambysoft.com/javaCodingStandards.html

"java 2 performance and idiom guide"(邦訳:Javaパフォーマンス戦略)では
前者(1)より後者(2)の方がよいと主張しています。(15.3節)
この本の論拠は以下のとおり。
(a)書きやすい
 キーストロークが少ない。
(b)読みやすい
 (1)に比べてimport宣言群が占める行数が少ない
(c)保守しやすい
 コーディング中に先頭に戻ってimport文を書いては元に戻るということを
 繰り返さなくてはいけない。コードを変更したとき不要になったimportを
 消し忘れるが、見た目にはそのクラスへの依存(結合)があると錯覚する。

この記述を最初に読んだときは、「ああ、なるほど確かにそれはうなずける」
と思いました。

さて、ここで、Emacs上のJava開発環境JDEにおけるimport作成機能を紹介します。
−クラス名の上にカーソルを置き、C-c C-v C-zと打つと、そのクラスのimport
 宣言が(1)の形式でファイル先頭import宣言エリアに挿入されます。
−M-x jde-import-sort と打つと、import宣言がアルファベット順に並び替え
 られます。
つぎに、JDEのMLに投稿されたPerlスクリプトimports.plを使うと、使っていない
クラスのimport宣言を検出することができます。JDEから呼び出すこともできます。

このようなJDEの機能を見ると、(a)、(c)の論拠が成立しなくなっています。
また(b)で大量のクラスをimportしているクラスは結合度が強くなりすぎている
かもしれないので、少しimportが減るようにリファクタリングした方がよい場合が
多いし、仮に大量にimportがあっても問題にならないと思います。

ということで、import宣言は(1)単独の型インポート宣言が良いという結論に
僕は落ち着いています。

#"java2 performance and idiom guide"はいい本です。念のため。

------
Toru TAKAHASHI <torutk@xxxxxxxxxxx>
http://www.alles.or.jp/~torutk/

JavaのスローガンであるWORAをもじって、
"Write Once, Read Anytime"
コードは書くのは1度だが、いつでも読まれる(だからちゃんと書きましょう)

--
Toru TAKAHASHI <torutk@xxxxxxxxxxx>
http://www.alles.or.jp/~torutk/