December 5, 2008

なんも考えずに"リテラル".equals(s)と書け

なんも考えずに"リテラル".equals(s)と書け
http://d.hatena.ne.jp/nowokay/20081204#1228409639


私は逆の意見です。


"リテラル".equals(s)

は私にとって既にトリッキーで、一瞬ではありますが「ん?」と考えなければならないコードです。


たとえば、「"OK"が処理結果なら」と「処理結果が"OK"なら」はどちらが自然でわかりやすいでしょう?


「こちらのほうが美しい」という理由よりも、「こちらのほうが安全」という理由で書き方を選んだほうがいい。


より多くの人が違和感なく自然に理解できるコードこそが安全だと私は考えます。




・・・まぁ、気持ちはわからなくはないのですが。


December 4, 2008

「ソフトウエア+サービス」を指向するMicrosoftの苦悩

パッケージとクラウド(SaaS/PaaS)の両方をやろうとする企業は辛そうですね。


「ソフトウエア+サービス」を指向するMicrosoftの苦悩
http://itpro.nikkeibp.co.jp/article/COLUMN/20081203/320635/

IBMのクラウドコンピューティングコンサルティングサービス、利害の衝突を巻き起こす?
http://www.infoq.com/jp/news/2008/12/IBM-Cloud-Conflict-of-Interests




案の定というべきか、わかっていたことではあるのですが。



December 3, 2008

public static final

・・・って、うっかりメソッドの宣言部に書いたら普通にコンパイルできました。

オーバーライド禁止を表す"final"を、オーバーライドという概念のないクラスメソッドに付けてもコンパイラに怒られないんですね。

付ける意味も全くないし、動作もまったく変わらないのですが(笑)

Java言語仕様 8.4.3.2 static Methods、8.4.3.3 final Methodsのどちらにも、クラスメソッドにfinalを付けるとどうなる、という規定はありませんね。
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.2

長いことJavaに関わっていますが、今さら気づきました。