ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

良いコード/悪いコードで学ぶ設計入門 14章のメモ

gihyo.jp

良いコード/悪いコードで学ぶ設計入門読書メモです。

長いので章ごとにしてます。

14章 リファクタリング ー既存コードを成長に導く技ー

  • 実務では未熟な設計やコードでスタートするので、この章に期待…!

14.1 リファクタリングの流れ

  • また読みにくいコードが…。
  • この順番通りに処置していくのがオススメとかあるのかな?

14.1.1 ネストを解消し、見通しを良くする

  • せやな。

14.1.2 意味のある単位にロジックをまとめる

  • せやな。

14.1.3 条件を読みやすくする

  • Rubyは標準ライブラリも否定のメソッドがいっぱいあるので、扱いやすいし、真似たくなります。

14.1.4 ベタ書きロジックを目的を表すメソッドに置き換える

  • プログラミングは…要約の作業かも?
  • Customer.isShortOfPoint って、ちょっと微妙感ありません?
    • PurchacePoint.isShort とかダメですかね…?

14.2 ユニットテストリファクタリングのミスを防ぐ

  • 悪魔を呼び寄せるようなコードにはテストがない……わかる……。
    • テストを書いてると、アレ?ってなって、コードを改善したくなるから、ひどくなりにくいかと思ってます。

14.2.1 コードの課題を整理する

14.2.2 テストコードを用いたリファクタリングの流れ

  • あるべき構造のひな形をつくっておくのはなるほど、ちょっとよさそう…!
  • ひな型のクラスに対してテストを書くのは、無駄にならなくて、精神衛生上かなりよさそうです!
  • レッド、グリーン、リファクタリング

14.3 あやふやな仕様を理解するための分析方法

14.3.1 仕様分析方法1:仕様化テスト

  • テストコードって、繰り返し実行しやすいから、仕様を探索するのに使いやすいのはわかります…!
    •  …だけど、こんなに少ない引数のだったら、コードを読むのも苦労しなそう。
    • 複雑なときもいけるのかな…?
    • 繰り返しやすいから、やっぱりやりやすそうです。

14.3.2 仕様分析方法2:試行リファクタリング

  • 読みやすくするためのリファクタリングかあ。
    • 捨てる勇気がなかなか…。わかってはいるんですが…。

14.4 IDEリファクタリング機能

  • IDEリファクタリング、まだあんまり使ったことないんですよね…。
    • IntelliJ IDEA、よさそうですが、高いんですよね…。
  • ひとつのファイル内なら、copilotにやってもらえるかも。(練習中)

14.4.1 リネーム(名前の変更)

  • これ、めっちゃほしい…けど、VSCodeRuby使ってるときにはないようで…?
    • 「シンボルの変更」を試したけど、同一ファイル内しか…。
    • 結局、grepして置き換えかあ…。
      • それでも、レビューとテストでガードしてれば、ある程度怖くないかも。

14.4.2 メソッド抽出

  • こういう細かいのも、やってもらえるならアリなのかなあ?

14.5 リファクタリングで注意すべきこと

  • 速いテストと小さい改善は相性がよさそう…。
    • テスト、前50分くらいかかってました…。今25分…。

14.5.1 機能追加とリファクタリングを同時にやらない

  • 同時にやってしまう理由は…?
    • プルリクエストがマージされるまでの時間がかかってしまうこと?
    • ほかにはなにかありそう?

14.5.2 スモールステップで実施する

  • コミットログでストーリーを語る…やりたいけどなかなかできないです><

14.5.3 無駄な仕様は削除することも視野に

  • やるやる、めっちゃやる!

Column Railsアプリのリファクタリング

  • ReadyForのことですよね。
  • 型のある言語だと、確かにリファクタリングはしやすい…ですね。
  • Rubyの型を使いこなせるようにしていかねば…。