現場を離れて久しいのでJava8練習中。
Java6っぽいJava8を書くことは可能だし、プログラマーの最低レベルに合わせるとそうなってしまう現場も多々あることは承知の上だが、便利なものはどんどん取り入れて改善していくべきだという考えは今も変わりません。
クソコードを生み出してしまったので恥ずかしながら公開。
// テストデータをたくさん作りたい場合とかを想定してください。
// 悪い例
List<MyObject> objs = Stream.of(1, 2, 3, 4, 5).map(i -> {
MyObject myObj = new MyObject();
/* いろいろやる */
return myObj;
}).collect(Collectors.toList());
// 良い例
// IntStream#range() だと5が出ないので注意
List<MyObject> objs = IntStream.rangeClosed(1, 5).mapToObj(i -> {
MyObject myObj = new MyObject();
/* いろいろやる */
return myObj;
}).collect(Collectors.toList());
コレクションの変数名を複数形(-s, -es)にするのがマイブーム。xxxListみたいな命名にしちゃうとハンガリアンっぽくて気持ち悪いし、型がListじゃなくなる可能性だってあるよなって、かれこれ5年くらいずーっともやもやしていたところでした。
Perlみたいな書き方ができないものかな~と、かれこれ30分くらい試行錯誤していました。Stream#of()の引数を 1 .. 5 とか書いてみたけど、まあ動くわけがない。PerlじゃなくてJavaなんだから。
# 注:Perlみたいな書き方
my @array = (1 .. 5);
そういえばPerlってまだ現役のところあるんですかね?
ストラッツやめろキャンペーンと同時期にPerlアプリ廃止案件がどっさり来て結構てんやわんやでしたね。リプレースしたいけど設計書がない上に、リバースエンジニアリングできる技術者も滅多にいないんだそうで。
かくいう自分も、最近はちょっとしたことは全部Pythonにやらせていますが。Perl書く方が得意なんですが、インターネットから切り離された環境だとCPANが使えないのが不便で……