また System.out.print() もそう。たかが print 文のくせして、なんで System.out.print() と書かないといけないのか。本来であれば、Java1.5 のタイミングで
「怠慢はプログラマの美徳」というけれど
package java.util;
public class PrintUtil {
public static void print(int arg) {
System.out.print(arg);
}
public static void print(Object arg) {
System.out.print(arg);
}
...
}
というクラスを用意し、static import を使うことで print() と書けるようにすべきであった。しかし長年 System.out.print() を何の疑問もなく使ってきた Java 屋の頭は凝り固まっているから、このような発想には行き着かないのだろう (言語が固いからといって、思考まで固くなる必要はないのにね)。
いや、そういうクラスをJava5で用意しなかったのは、そのような発想に行き着かなかいからではなく、どうしてもそういう事がやりたければ
import static java.lang.System.out; public class printTest { public static void main(String[] args) { out.print("aaa"); } }
という手段が既にあるからだと思う(これもあまり見たこと無いけど)。
"out."は要るでしょう、最低限ネームスペースというか。そもそもprint,get,put,add..等々の一般的な英単語がソース中にいきなり裸で出てくるのって嫌ー(しかも別クラスのメソッド)。
まーこの辺を気持ち悪いと感じるかどうかはセンスの問題かも知れないが。もしかするとプログラマではなく…例えば設定ファイル(一応ちょっとしたロジックも記述できる)書き屋さんとかだと寧ろ簡潔で好ましく感じるのかも。「標準出力したいと思ったらprintを指示、それが本質」とかあくまで想像だけど。
つか既にコメント欄で同じ事突っ込まれてるじゃん。ちっ。まー真っ先に思いつくからそりゃ10人居れば9人はまず同じ事言うだろうなー。
で、それへの対案が
kwatch 2008/04/27 21:44
さすがJava屋さん、IDEを使えば問題ないというのはプロパティのときと同じ発想ですね。
ときどきでいいのでreadabilityのことを考慮してあげてください。
あとSystem.outを使うだけならstatic importを使うまでもなく、ローカル変数への代入で済みますね。
IDEを使うとリーダビリティを忘れるってのは正直何言ってるかわからない、がそれはさておき、え?!System.outをローカル変数に代入して使う?!何その言語道断なコーディング。全メソッドの先頭にSystem.outをローカル変数に代入処理を書くのか、はたまた、パラメータとして全メソッドで持ちまわるのか、そしてやっぱ利用前にnullチェック要るのかとか…さすが発想の柔軟なスクリプト言語の人!…とは言え、柔軟過ぎやしないかそれは。static importに対するメリットが見えない。デメリットは代入忘れるパスが出るかもとか人によって変数名変わるかもとか思いつくけど。
ちなみに、Larry Wallの言う三大美徳の Laziness、Impatience、Hubris の、Lazinessは私の知る限りでは「怠慢」よりも「怠惰」と訳されてる事が多い。
無責任なサボリのイメージが強すぎるからか>「怠慢」
スレと関係ないんだけどさ、俺「釣り」とか「釣り師」っていうのは、 釣り師 ↓ . /| ←竿 ○ / | . (Vヽ/ | <> | ゙'゙":"''"''':'';;':,':;.:.,.,__|_________ | 餌(疑似餌)→.§ >゚++< 〜 の組み合わせだと思ってたんだけど、 最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか 言ってるの多いよね。 これは、どっちかというと、 ,〜〜〜〜〜〜 、 |\ ( 釣れたよ〜・・・) | \ `〜〜〜v〜〜〜´ し \ ゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ト>゚++< ノ) かと思うんだけど、どうよ?
コメント