長いので章ごとにしてます。
12章 メソッド(関数) ―良きクラスには良きメソッドあり―
12.1 必ず自身のクラスのインスタンス変数を使うこと
- rubocopで言ってくれるので助かってます…!
- 慣れていない言語は特に最初からこういった助言をしてくれるツールをいれるようにしてます…!
- たまに置き場に困って、作っちゃうこともありますが…FIXMEを入れるようにしてます :pray:
12.2 不変をベースに予期せぬ動作を防ぐ関数にすること
- 並行処理がなければそこまで…という気持ちもありますが…。
12.3 尋ねるな、命じろ
- 相手の状態を尋ねて、それに合わせて処理をする…じゃないってことですが…ついついやっちゃいがちです。気をつけます…!
Column クソコード動画「カプセル化」
- getter/setterは……fat controllerはこれのせいかもなぁ…。
- ちょっと学習しないと、そこから抜け出せないというか…。
- うちのコード、まだそんなところがいっぱいあります…。
- ちょっとした勘所がある気がしてます。
12.4 コマンド・クエリ分離
- 激しく同意…。
- 一番嫌なものは、クエリに見えるメソッド名なのに何かしら副作用があるもの…。
- コマンドでも、create_postみたいなメソッドは生成されたpostを返すのが自然かと思いますが、これはいいの?
12.5 引数
12.5.1 引数は不変にすること
- 気づかずに変更されているとシンドいですが…。
- よく考えたら普通値渡しだから、割と平気では……?…と思ったけど、オブジェクトの参照が来たりして、普通に操作できちゃいますね…。
- 毎回finalは面倒そう…。
- 静的解析ツールで引っ掛けられればそれでもいいかも。
- rubocopではできなかった…。
- 静的解析ツールで引っ掛けられればそれでもいいかも。
12.5.2 フラグ引数は使わない
- テストを書くようになってからやらなくなりました。
- テストパターンが膨大になってしまって、わけが分からなくなるんですもん。
- こういうことに気づけるので、テストはいいなと思ってます。
12.5.3 nullを渡さない
- 言語的にサポートの入っていると気が楽でいいんですが…。
- Dartの変数宣言の?とか。
12.5.4 出力引数は使わない
- 昔にCでやってたときにはめちゃくちゃ必要だったんですが…いま欲しいと思うことがない気がしてます。
- 5.4を見に行ったら…それは別のオブジェクトの操作だろ…みたいでした。
- 普段からメソッドの持ち主については考えるようにしています。
- 使いたくなったら再考しよう、かも。
12.5.5 引数は可能な限り少なく
- テストを書くようになってから、気にするようになりました。
- だってテストが大変なんだもん。
- …つまり、複雑なコードだってことですよね…。
12.6 戻り値
12.6.1 「型」を使って戻り値の意図を表明すること
- これは言語の仕様でなんとかしたいところ…。
- Rubyも型定義を使えるようになっているので、活用していきたいです…が、まだやってません><
- 前職の古いPerlのコードで、自由気ままな返り値の型でしんどい思いをしました。
- プリミティブ型じゃなく、クラスで間違いを減らせる…なるほど。
- やったことないですが…やってよかった!という実感のある方がいるか、訊いてみたい…。
12.6.2 nullを返さない
- い、いちぎょう……!
12.6.3 エラーは戻り値で返さない、例外をスローすること
-1
でエラーにするのは…身近にシェルがあるから、そういう気持ちになってしまってました。- 変な値では返さないようにしたほうがいいのは間違いなさそう。
Column メソッドの名前設計
- 10章の復習。
- 動詞+目的語は責務外のロジックの可能性が…というのはわかるので、気をつけて行こうと思います。
Column staticメソッドの扱いに注意
- 5.1の復習。
- staticメソッドは責務外のロジックの可能性が…というのはわかるので、これも気をつけて行こうと思います。