Go Ahead: Next Generation Java Programming Style

http://codemonkeyism.com/generation-java-programming-style/


次世代Javaプログラミングスタイルだって。ちょっと面白かった。こうゆうスタイルが身に付いたらプログラマのステージがひとつ上がりそうだけど,世間一般に普及させんのは難しいんだろうなとオモタ。


1.Final is your new love.
(変数の)final宣言を好めって良く聞くね。気持ちもはわかるけど,徹底するのは大変。


2.No setters.
ミューテータ(setter)作んないでコピーコンストラクタ使えと。オブジェクトの普遍性不変性にこだわりますな。
アクセサ(getter)も作んな,って言ってるけど,ちょっと分かんなかった。→ Tell, Don't Ask | The Pragmatic Bookshelf


3.Do not use loops for list operations.
クロージャ無いのにforループやめれなんて無茶を言う。google-collections使えば大丈夫だよとは言うが,日本じゃJakarta Commons以上に普及してないと思うけど...。
なによりJava6な世の中になっても,Vector/Hashtable/Enumerationは根強く使われている予感がする。:-)


4.Use one liners.
ワンライナーを積極的に使おう。これ賛成,賛成。三項演算子だってもっと積極的に使おうよ。ビット演算子は...ちょっと自重しようか。:-)
IDEをちゃんと設定してないと,ワンライナーの意図を無視してフォーマットしちゃうので気をつけないと。


5.Use many, many objects with many interfaces.
粒度の細かいオブジェクトをいっぱい作ろうって,あんまり賛同したくないなー。今だと列挙型もあるから,上手い事やればキレイにできるのかもしれん(Java5以降の経験値が低いもんで...)。"Never, never, never use String in Java"で「Stringは悪」つうのも分からんでも無いが,やり過ぎ注意かな。


6.Use Erlang-Style Concurrency.
そもそもErlang知らん。Scalaで言うところのActorってとこまで分かるが,ScalaのActorもよく知らない。:-P
でもActorベースの並列プログラミングが流行りなのは分かる。って,なんの理解にもなってないな。あははー。


7.Use Fluent Interfaces.
流れるようなインターフェイスを使えと,ここでもgoogle-collectionsおすすめ。Fluent Interfacesの一番の敵はIDEのオートフォーマッタなのだよ。


8.Data Transfer Objects without setters and getters.
なにそのSeasar2


どれも従来のJavaっぽいスタイルから,ちょっとひねったものばかり。まあなんだ,そこまで言うならいっそScala使ったらどうだ?て思うよね。:-)