java

スペルチェックは無効に。

Window>Preferenceで、spellで検索して、Enableをオフにする。 最近、eclipseの設定は検索を多用してます。fontの設定とか。

eclipse3.2と3.3の違い

今更乗り換えた。 package表示で、ビルドパスに加えたjarをReferenced Libraryとして畳んで表示するようになった。 超見やすい。 Refactor>Rename(Shift+Alt+R)で、サブウィンドウを使わなくなり、動作が速くなった。 微妙に気持ち良い。

コーディング規約は

クラス設計の規約とごっちゃになる場合が多いけど、両者は別物でしょうよ。パッケージ定義とかクラス名をどうすべきかとか、public/protectedメソッド名をどうすべきかとか、そういうのはクラス設計と呼ばれるもので、ローカル変数の命名規則と同列に扱うべ…

インスタンス取得はコンストラクタか、staticメソッドか

javaで、普通にインスタンスがほしいときは String hoge = new String("hoge"); とかするんだろう*1。というか、そうするためにnewなんてのが用意されてるんだけど。他方、staticメソッドで同じような感じにできる。 String hoge = String.valueOf("hoge"); …

日本語のクラス/フィールド/メソッド名

って使って副作用とかあるものなんでしょうか、という旨をh:keyword:java*1に書いてみたけど、改めてこちらにも。 特に画面表示の場合、見出しと同一なフィールドで管理すると英語に訳してみたり対応を探してみたりする手間が減るので、使ってて負担がないん…

javaでリフレクションを多用すると、利点が失われるんじゃないか。

性的チェック…じゃなくて静的チェックができなくなるから。 テストの問題というよりは、ソース上の処理の流れとかクラス間の関連性だったりが調べ難い。

SpreadSheetMLによるexcelファイル出力

とりあえず、使っています。具体的な開発手順は↓。 雛形となるファイルを用意し、XMLスプレッドシート形式で保存する。 保存したファイルに、xsltスタイルシートタグを埋め込む。 変換元XMLをDOMでコリコリ作る。 そのDOMオブジェクトに対して作ったスタイル…

postgreSQLのtimestamp with/without timezoneのjavaへの対応の違い

前にネタにしたんだけど、結構検索で引っかかる方が多いので補足します。 timestamp with timezoneはjava.sql.Timeクラス timestamp without timezoneはjava.sql.Timestampクラス という、結構単純な話でした。ResultSet.getMetaData().getColumnClassName(i…

eclipseのtomcatプラグインでデバッグ時に実行している行がハイライトされない件

window-Preferencesを開き、Tomcat-source pathで、デバッグしたいプロジェクトがチェックされているかを確認する。

下位互換性がイノベーションを阻害する

状況的に仕方がなかったりもするんでしょうけど。 javaは下位互換性を重視しているという話。この遺産が重くのしかかったとき、javaは捨てられるんだろうなぁという気がした。何年後かはわからないけど。重要なのは、その時点でのjava自身にはそれほど問題が…

取り合えず動いた。

半年前にちょっと試したような気がするけど、あのときは結構ワケわかんなかったような気がするが、今は大体何をしようとしてるのかがわかる(ような気がする)という何とも感。 もうちょっと遊んでみよう。

例外処理

こんなソースがあった。 public void hogehoge(Fuga fuga) throws SQLException, Exception, IOException{ //... } 取り敢えずthrows Exceptionを消して他の具体的な例外に書き直し。するとコレを受けたソースでcatch句で、スローされない例外をcatchしてい…

マスタを持たないコードは数字で扱わない方がいい。

ような気がする。 enumで管理しようとすると列挙できないから。 ただし、それをマスタで管理しよう、serialなサロゲートキーを使おう、という変更には耐えられない。dbでは数字で管理、javaでは"code_"なりの接頭語をつけて管理する…のも手だけど、暗黙の仕…

HttpServletRequest.setCharactorEncoding()の暗黙的順序

HttpServletRequest.setCharactorEncoding(String code)は、HttpServletRequest.getParameter()の前に書かなければならない。 じゃないと、無効になるっぽい。

BigDecimal 1.05と"1.05"

考えると当然なんだけど、一瞬あせったので、メモ。 new BigDecimal(1.05) new BigDecimal("1.05") は違う。

PostgreSQLとJDBCの"Timestamp"の解釈

CREATE TABLEの場合、TimestampとするとTimestamp without timezoneとして解釈される。 pgAdminIIIで「新しい列...」では、Timestamp with/without timezoneのどちらかを指定しなければならない。 入力リストボックス上、Timestamp with timezoneが上にある…

javaでは、神経質なくらいにガチガチに作った方がいい。

ような気がする。 super/sub classのどちらにするかとか。

じゃばの発音。

じゃばの「じゃ」と「ば」のどちらにアクセントを置くかという話題がどこかであったような気がしますが、石川県在住としては方言的には関西圏なので、「ば」にアクセントです。 使用例:あんたん会社、じゃば出来る人おらんけ?*1 *1:誰でもいいから連れて来…

コード自動生成の拡張性

自動生成したコード(というかクラス)は直接使用せず、必ず継承したクラスを用意して*1、それを使う。再生成した場合、親クラスのみを入れ替え、子クラスは上書きしない。ユーザが独自にメソッドを定義したい場合、親クラスではなく子クラスに用意する。 例…

富豪的SQLの実例

http://d.hatena.ne.jp/rokugen/20070625#1182754549 http://d.hatena.ne.jp/aufheben/20070624/1182708030 はてなRSS巡回先で微妙に盛り上がってるので、微妙に反応してみる。ただし、SQLレッスンの趣旨からちょっと離れるだろうけど。 流れ的にはid:aufheb…

tomcatにおいてorg.w3c.dom.Node.setTextContentでNoSuchMethodErrorが出た件について。

Tomcatさんは$TOMCAT_HOME/common/endorsed/*.jarをsun.boot.class.pathに設定する。何故かrt.jarより優先させているため、java5なのにorg.w3c.dom.Nodeへの参照は$TOMCAT_HOME/common/endorsed/xml-apis.jarが優先され、Error。 org.w3c.dom.Node.setTextCo…

private methodを使わない方針

private methodは不要(消極的理由) private methodは悪い(積極的理由) 「行数が***行を超えたらメソッドの分割を考える」の解決策にはならない。元の***行のソースが細切れになっただけなら余計に見にくい。 private methodのパラメータとすべきか、クラ…