okuの日記: 臨時 Java 工員 2
日記 by
oku
今月から、臨時で Java 工員を努めることになりました (要はお手伝い)。
まあ、今時 Java も書けない奴と思われるのもシャクですし、ちょうど仕事が薄い時期でもあったので、まあいいかと... 思ったら、元々の仕事で色々困った事象が発生するのも世の常のようで。
それにしても、Eclipse で Java、という (世間で一般的な) 開発環境は、労働集約開発するには本当に便利だなあと実感します (少なくとも vi (emacs でもいいけど) + make (jam でもいいけど) に比べれば)。 なんせ最初の学習曲線についてはかなり立ち上がりが良くできますから。
妙な static 変数とかそういうのをプログラマが書いてしまうのは防げないっぽいですが... ていうか、Java で static ってどういう時に使うのが定石なんでしょうか。 Java 素人の自分が直観で考え付くのは:
- Singleton ぽいことをしたい時。 正直、業務屋さんの需要としては少なそう
- java.lang.Math みたいな this 不要の小道具類。 でもそういうのなら public にするよね、と
- main から直接呼び出したいメソッド (args のチェックとか)。 今回、見たのはそれに近い奴なんですが、その結果を格納するための変数がメソッドにひきずられて static になっているのは何かが間違っているような気がする...
まあ、そういう流派もあるのかも知れないと思って、スル−することにしておきます。
静的検査 (スコア:2)
そういう時のためにfindbugs [sourceforge.net]で静的検査して、常時指摘→修正の流れを作っておくものかと思います
finalでないstaticが必要になるタイミングは…マスタDBのキャッシュをメモリ上に持ちたい時くらいですが、Servletの話ですので違いますか。
しかもJavaでのマルチスレッドの扱いによほど自信のある人でないと危険ですよね。
上手く使えると大分速度に違いが出るのですが。
Re:静的検査 (スコア:1)
件のソフトウェアプロジェクトでは Checkstyle [sourceforge.net] にカスタマイズしたルールを付けて使っていますね。 もっとも、既存のコードを読んだ限りでは「これはもうしようがないよね (a.k.a. 直すの面倒いよね)」とレビュアーが思った指摘についてはお目こぼしして貰えるようですが (長すぎるメソッドとか)。
ああそうか、セッションが切れると同時に捨てられると勿体ないものを取っておくのにも使えますね。 ちなみに件のネタはバッチプログラムなので、オブジェクトの寿命≒プロセスの寿命、というわけでその範疇には当たっていないですね。