« 涼宮ハルヒED特別版 | Main | アニメに学べ »

今日もJavaがキライ

あいかわらずJavaがキライです。

Javaの言語的な特徴はある程度知ってますし、文法もなんとなくはわかりますが、キライだから書かないためイディオムやクラスライブラリを全く知りません。だから、Javaのプログラムは書けません。ま、読めるのはなんとか読めると思いますけど。

仕事で、チームメンバが書いたJavaプログラムをセットアップする必要がありました。DBを読んでその情報を元に別のプログラムを起動するだけの単純なプログラムで、たかだか500行ぐらいのソースです。ところが、うまく動きません。しぶしぶ、原因を調べることにしました。

出てるエラーから察するに、問題はDBから意味のある値が戻ってないことのようです。まず、それを確かめることにします。HogeChecker.javaという名前のファイルなので、HogeChecker_tam.javaと名前を変えて、一行、デバッグプリントを仕込んでコンパイル。

・・・エラーだし。ああ、そうか。ファイル名とクラス名が一致しなくなったからか・・・

バカじゃねえの?そんなんでエラーにすんなよ!!

しょうがないから、クラス名をファイル名にあわせます。main()の中でnewしてるのが前の名前だから、またエラー

ああ、もう。融通のきかん!!

DBにアクセスして、ResultSetを取るところまで動いていることはわかりました。次は、SQLか仕込むデータが間違って0件なのか、値は取れているがその後の処理に問題があるのか、それを確認したいですね。

  System.out.println(rset.size());

とか、書いてみた。コンパイル

そんなメソッドはねえだと?馬鹿融通のきかねえクソクラスがよ!!

相変わらず、一貫性のないクラス設計に悪態をつきつつ、APIリファレンスを見ます。んー、件数を取れそうなメソッドがありません。ResultSetMetaDataってクラスがあるな・・・。列数取れるのね(<この時点で、Tambourineは行と列を取り違えてます。欲しいのは行数です)。

  ResultSetMetaData rsmd = rset.getMetaData();

また、そんなクラスは見つからねえと言われました。import見ると、

  import java.sql.ResultSet;

・・・。しょうがないから下に、java.sql.ResultSetMetaDataのimportも付け足します。あー、何のためにクラス階層とファイルシステムを一致させてるのか意味がわからねえよ、これじゃ。

やっぱ馬鹿なんじゃないの?

もしかしたら、書いた人が馬鹿なのかな?なんでjava.sql.*としないんだ?なんかデメリットがあるのかな?教えて、偉い人。

いやあ、とにかくJavaでプログラム書くのはストレスが溜まる。こんなものを毎日使わなきゃいけない状況になったら、転職するかも~。

|
|

« 涼宮ハルヒED特別版 | Main | アニメに学べ »

パソコン・インターネット」カテゴリの記事

Comments

1.5は知らないが(笑)。
それでご飯食べてたから言うのもなんだけど、じゃんじゃん逆コンパイルできるしサイコーだとおもってます(笑)、。
あと、クラス名やメソッド名がいかにも!って感じで当たりをつけやすいのがGood。

DBかぁ…全然関係ないが3万払ってMicrosoftのDBの資格取ったけど今全然生かせてない(笑)。

Posted by: ぺんぎん | February 01, 2007 at 12:49 PM

Javaは最近になってIDEが無いと使えない体になってしまった。人間楽すると駄目だねぇ。(笑
まずソース寄越せ。話はそれからだ。
その人が書いたソースがまともかどうかが第一の鍵だよなぁ。とんでもないの書く人も適用業務界隈は多いから。

>ファイル名とクラス名が一致しなくなったから

これはIDEを使うとちゃんと警告してくれます。EclipseかNetbeans入れなさい。

>main()の中でnewしてるのが前の名前だから

これもIDE使えば自動で直せます。

>一貫性のないクラス設計に悪態をつきつつ

秘密機関Gに聞いてみたところ最近のDBは皆SQLコール時には全ての行が入っていないためにカーソルを最終行に移動して、moveLast -> getRowNumするしかないそうだ。これはどの言語でも変わらないと書いてある。例えメソッドがあっても中で同じ個とやっているはずなので確認するべしとのこと。

>java.sql.*

これはjava.sql.*にはjava.langと同じ名前のクラスがいっぱいあることと、最近のIDEはimport文を自動でつけてくれるのでこの*を使うスタイルはもう流行らんのだなぁ。

とりあえずもそっとしたらPHPとRubyの世の中になりそうなので気にするな。とりあえずJRuby使っとけ。


Posted by: こ | February 01, 2007 at 03:47 PM

java.sql.*スタイルは気づかないうちに違うクラスを使ってたり名前がぶつかったりしてると困るし、IDEがあれば*を使わなくてもそんなに不便じゃないから、っていうことでしょうね。

それに、どこの名前空間のどのクラスを使ってるのかという.javaファイルに対するドキュメンテーションの意味合いもあるのでRubyも似た仕様になってくれないものかと思ってます。

Posted by: Yugui | February 01, 2007 at 07:36 PM

IDEがあれば・・・というのは同意

でもね、今回の場合、Windows上で下請けさんが作ってきたちょっとしたアプリをAIXの上で動かすというパターンなんですわ

当方、viでござんして・・・

さすがにそりゃ、パッケージ文もありのクラスファイル山盛りのbuild.xml付の・・・ってなら、私もviでその場修正はしないわけですが。というか、そうなったら、もう自分では触りません(笑)

Rubyの名前空間は現在の懸念の一つみたいですが、あっちは何というかクラス名がバッティングしたら、「どっちが使われるか」ではなく、>>混ざり<<ますからねぇ(笑)

Posted by: Tambourine | February 01, 2007 at 10:22 PM

DBはどこにあるのん?
DBがリモートからの接続を受け付けているのならかまわずWinでテストして完成してからAIXに持っていけば吉。
そうでないのならXサーバを立てて、AIXかWinでXクライアントを立ててIDEを使う。もしくはSAMBAでWinファイル共有してWinで作成する。

それすらダメならDBのスキーマをコピーし、自前のWin環境にDB2-Expressだかなんだか無料版かそれに順ずるものを入れて自前環境で完成し、AIXへ持っていく。それがダメならインフラに時代遅れの開発環境を責めた上でさっさとそんな現場を離れる。
テストだけやり直せば開発はPCで良いのがJavaの良い所でしょう?
インフラが開発に非協力的なのが問題ですわ。まぁ、がんばって。

Posted by: こ | February 01, 2007 at 10:59 PM

いや~懐かしい。
がんばって下さい。
人の書いたクソソースの手直しって一番嫌ですね。
経験や思想。性格でますからね。
俺は、ある先輩のソース追うのが死ぬほど嫌でした。

Posted by: タコチン | February 02, 2007 at 10:38 AM

> テストだけやり直せば開発はPCで良いのがJavaの良い所でしょう?
> インフラが開発に非協力的なのが問題ですわ。まぁ、がんばって。

悪かったな。インフラってのはアタシのことだよ!(笑)

Posted by: Tambourine | February 02, 2007 at 04:22 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/47905/13730363

Listed below are links to weblogs that reference 今日もJavaがキライ:

« 涼宮ハルヒED特別版 | Main | アニメに学べ »