■実装方針
メソッドの引数にはfinalをつけない
引数を書き換える(オブジェクトの設定用メソッド呼び出しなども含む)は基本的に行わない
引数の書き換えが必要な場合は、分かりやすくコメントを書くか、メンバの情報を書き換えたインスタンスを返すメソッドを呼び出す
http://or1ko.hatenablog.com/entry/20091117/1258479541

enum型のメンバはfinalにする(イミュータブルにするため)

