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

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



澤田です。

On Fri, 24 Nov 2000 00:38:05 +0900
in [jfriends-ml 1434] Re: import 宣言はどっちのスタイルがよいか
Toru TAKAHASHI <torutk@xxxxxxxxxxx> wrote:

> 高橋(徹)です。

> swing、awtのようにクラスが多いパッケージや、java.utilのように毛色の異なる
> クラスがごった煮のようになっている場合は、利用しているクラスまで知りたいな
> と思うのですが、いかがでしょう?

Swing, AWT関連はクラスが多いからこそ import ..*; にしたいです(笑)。
java.util も私は java.util.*; と書いてしまいますね。それだけでは
本当は何を使いたかったかを知る事が出来ないけど。

# java.util はそういうもの、と慣れちゃっているような気がする。

> いろいろな文化があっておもしろいところです。いろいろな話を聞いていると、
> 工夫とかも垣間見えて参考になることもあったりするので楽しいです。

JBuilder なんかだと、あらかじめ import を書いておかないと勝手に
追加しちゃったりしますね。正直私は嫌いなんです。


> > > また(b)で大量のクラスをimportしているクラスは結合度が強くなりすぎている
> > > かもしれないので、少しimportが減るようにリファクタリングした方がよい場合が
> > > 多いし、仮に大量にimportがあっても問題にならないと思います。
> > 
> > 確かにそういう分析のためにimport宣言を利用するのであれば
> > (1)にすべきですが、厳密にやろうとすればimportは書かずにFQCN(こんな
> > 呼び方があるんですね。知らなかった・・)を直接書いている部分も調査する
> > 必要があるし・・とか安易に反論してみます。墓穴掘ったかも。
> 厳密にすると、Class.forNameで文字列渡しを用いるコードもあるんです。

Class.forNameは目的があって使っていると思うので、同列には扱えない
のではないでしょうか?そもそも Class.forName を使う時点でコンパイラを
素通ししてしまうというリスクを犯すわけですから、相応のメリットがないと。

> RDBMSはほとんど触らないのですが、たまたまJDBC使うコードみたら、
> JDBCドライバをロードするところでClass.forNameを使うのが常套手段
> みたいですね。

JDBC使う場合のClass.forNameは変則的な使い方だと思います。
JDBCドライバ(java.sql.Driver)は自身のクラスがロードされたときに
インスタンスを作成して DriverManager に登録するというルールがあります。
だから使う方は Class.forName() するわけです。

> ちょっと実験で作るSwingのプログラムの場合、いちいちimport指定するのが
> 面倒なので、import javax.swing.*;とやってしまいます。

「面倒なので」で突破出来ちゃうという点で、コーディングルールとしては
強制しにくいかもしれませんね(^^;

___
澤田 大輔(die)
email: die@xxxxxxxx(home), swd@xxxxxxxxxxxxxxxx(office)
「積読」 http://www.techbrains.co.jp/~swd/book/