- - PR -
importの記述について
| 投票結果総投票数:143 | |||
|---|---|---|---|
| 一つずつ | 92票 | 64.34% | |
| *でひっくるめて | 49票 | 34.27% | |
| その他 | 2票 | 1.40% | |
| |||
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-15 00:07
*派が思いの外少ないのにびっくりです。
私は使用しているクラスが分かったところで、 嬉しかった試しがないので*を多用しています。 Eclipseを使用していると、*で括っているのを 展開するのも簡単に出来るので、一覧が必要に なったときに考えればよいでしょう。 | ||||||||||||||||
|
投稿日時: 2004-01-15 00:24
>メモリに関しては、本当に何も知らない状態で聞かされたので、
コンパイル時に影響があるなしの前に,Javaは普通は動的リンクです. 「ダイナミックなんとか」なんて名前が付いてなくても,当たり前のように 全て動的に処理されます. たとえクラスファイルに影響を与える場合でさえも,実行時に実際に呼び出される までは,そのクラスファイルは「ロード」されないのでメモリを消費しないそうです. 初回実行時に初めて,JavaVMがそのクラスをロードします. それに,いまやクラス定義自体が消費するメモリなんて,全体からすると 微々たるもののはずなんですけどね.動的リンクのことも分かってない人だと メモリのことまで考えてコードを書くのはかなり厳しいでしょう.. | ||||||||||||||||
|
投稿日時: 2004-01-15 10:55
私もおかもとさんと全く同意見です。
必要になった時点で展開すればいいと思って、*を使っています。 その方が、普段は楽ですので。 | ||||||||||||||||
|
投稿日時: 2004-01-15 11:16
unibon です。こんにちわ。
JDK(J2SE SDK) のソースコードはどうなっているんだろう、と思って見てみましたが一貫性があるのかないのかが良く分かりません。たとえば String クラスだと、* を使わずに律儀に書いてありますが、Runtime クラスだと、* を使った import と * を使わない import が混在しています。 #余談ですが、import よりも、コメント中の日付フォーマットを統一してほしい。YY/MM/DD なのか MM/DD/YY なのか良く分からない。たとえば 01/23/03 っていったいいつなんだ? ただ、依存関係のルートに近い String クラスとかだと、* を使わないで import していたほうが見ていて安心感があります。そういうことがあるから、逆に * を使うのは乱暴だ(繊細さがない)という印象を与えてしまうのかもしれません。 しかし * を使わないからと言っても、ソースコード中の import より後ろのメソッド定義のところで java.io.Serializable とかパッケージ名付きで登場することもあるので、import で判断するのは厳密ではなく、したがって * が付いていないから良い、というのはやはり幻想のように思います。 #最後の部分は、「...したがって * が付いているから良い、...」と間違って書いていたので、あとで修正しました。 [ メッセージ編集済み 編集者: unibon 編集日時 2004-01-15 11:20 ] | ||||||||||||||||
|
投稿日時: 2004-01-15 13:32
確かにEclipseを使えばいつでもimport文を展開できますが、 個人的意見でははじめから展開して記述すべきと思っています。 その理由としては、 ・そもそもimport文を書かない Eclipseを使い出してからはそもそもimport文を書きません。 Ctrl+Shift+Oを多用します。 ・ソースコードの変更が容易でない 実際のプロジェクトでは、政治的・管理的な理由からいったん リポジトリに格納したソースコードを修正するのに事務的手続きが 必要だったりするので、後からimport文を展開するというのが できない(あるいは難しい)場合があります。 ・テスト import文を展開した後、テストを実施する必要があるか、が問題です。 たかがimport文ですが、java.util.Dateとjava.sql.Dateの違い等、 バグを引き起こす可能性が無いとはいえません。 例えばテスト済みの数百、数千ものソースコードを一気にimport展開した として、ずべてのテストをやり直すのか、と言う話になります。 と言うところです。 | ||||||||||||||||
|
投稿日時: 2004-01-15 14:12
unibon です。こんにちわ。
これは、私の前回の「杞憂」と似ていると思いますが、直接バグに結びつくことはありません。コンパイルすると「あいまいです」と怒られます(あいまいなまま実行できるクラスファイルが作られることはないです)。 そこで、ソースコードを修正するわけですが、その際に、
を
とするか
で、間違ったほうを選んでしまうと、バグになってしまいます。 #ほとんどの場合は、シグネチャーが合わないのでコンパイルエラーになりますが、100%そうなるとは限らない。 また、これもほとんどありえないとは思いますが、java.awt.List クラスがなくなるタイミングと java.util.List インターフェースができるタイミングが等しいと、「あいまいです」というコンパイルエラーにすらならず、気づかないままバグが埋め込まれてしまう可能性もわずかながらあります。 #これには上記のシグネチャーのこともすり抜けた場合の話なので、確率は相当低いですが。 標準 API なら互換性を重視するためまずありえないでしょうが、自前のクラスだとありえるかもしれません。 でも、そんな細かいところまで神経を使っても、たぶん、別のバグの発生の可能性のほうが高い気がするので、あまり import にこだわってもなあ、というのが私の主観になります。 | ||||||||||||||||
|
投稿日時: 2004-01-15 23:12
どっちでも良いのですが、この部分はとても新鮮でした。 「import文を書きますか?」って投票したらどんな結果になるんだろう・・・。 | ||||||||||||||||
|
投稿日時: 2004-01-16 15:18
どうも、Wataです。
一応私はひとつずつ派ですけど、Eclipseとか使っているとやっぱりどっちでもいいですね。 どちらにしても、書く手間もないし、参照先を迷うこともありませんから。 でも、java1.5のstatic importが入ってくると、 また少し話が変わりそうですね。 # 実務では1.4もろくに使えない状況ですけど (^^; | ||||||||||||||||
