makotan _at_ gmail dot com

15ポイントルール 2013年版 について

改訂の時に悩んだり、考えたりしてたポイントの付け方で悩んだところとかそういうのについて

今回の改訂で0ポイントの条件を追加

いろんな方向から考えて利用を推奨できるものは基本的に0ポイント
従来でもコメントは計測対象外だったけど、それ以外にも品質向上に繋がったり、運用的に必要なものはどんどん書いちゃえ!ってことで事実上の計測対象外にした

クロージャ、メソッド参照、メソッド内メソッドなどを追加

これからきっと増えてくるであろう記述を先回りして追加
悩んだのはクロージャで1ポイントを使うことについて、最初の構想案ではクロージャの中がトータル1ポイントならクロージャは0でも良いかなというのを悩んだけど、計算が複雑になりそうなので諦めて1ポイントにした。
本音から言うとクロージャは0ポイントでも良いんじゃないかなぁ〜って気はするけど、もう少し実装しないと何とも言えない

従来からある構文に対応

Javaだとほとんど使わないけど、ずっと存在してるcase文に対応したのと
9年前はあんまり使われてなかったメソッドチェーン方式(流れるような呼び出し方)に対応
実はこれもこれから増えてくるであろう記述を先回りして追加した感じ

関数型を意識した条件を追加

変更不可の変数への代入は関数型らしい記述なので、この辺を追加
変更不可の変数にはScalaで言うところのcase classやタプルも含む


ポイントをなるべく使わなくする書き方は?

簡単に言うと、同じ動きをする処理でもちゃんとした関数型で書いた方がポイントは確実に減る
末尾最適化が出来ないコンパイラでやるべきではないので、そこだけ要注意
Java8だと上手くCollection系のクラスを使えばかなり減るはずだけど、周辺のフレームワークが色々対応しないとそんなに減らないかなぁ〜
あとは時々ある特殊な実装を別として適切に分解すれば15ポイントに収まるはず