hamburger

主に日記

「リファクタリング 既存のコードを安全に改善する」を読んだ

目的

リーダブルコードなどを通じてきれいなコードを書く方法は学んだことがあったが、既存のコードをどう改善していくか?について体系的に学んだことがなかった。(転職直後ということもあるが)新規実装よりも既存処理の改善や、機能追加が業務的に多いため、適切に改善する方法を学びたかった。
まえがきにもあるように、前半がリファクタリングに取り組むにあたって身につけておくべき考え方について、後半は系統別にリファレンス的な内容だったので、前半を一気に読み、後半は必要に応じて読みながら業務で活かしていきたい。YAGNI的な感じ

感想

  • 一般論の他に作者の主観も書かれていたのが良かった。
    • 例えば、関数の返却する戻り値はresultにして、返却するという意味を明確にするためらしい。Carクラスのインスタンスを返却する関数の戻り値のを carmyCar のようにしていたが、たしかにこれだと string int命名しているのと変わりないので、自分も真似しようと思う
  • (特に第一章は)タイトルやトピックの説明をするのではなく、実際の作者のストーリーを追いながらその課題に対して取るべきアクションを紹介されているので、自分の理解フローにあっていた
    • 説明的な本はリファレンス的には役立つけど、なぜ必要なのか?が気になってしまい個人的に苦手
  • 小さく変更し、小さく確定(commit)し、小さく確認する という明確な基準に沿っている。ほぼすべてのトピックはこれに集約されるので、とにかくこれを意識して業務に取り組む
  • 実装とリファクタリング、パフォーマンスチューニングは分けて取り組む。ただし、コンテキストの把握を容易にするためにコミット(masterへのマージのこと?)は分割する必要はない。
    • 一緒にやってしまうと局所最適になりがち
    • きれいに整理されたコードが準備されたときに全体を計測し、ボトルネックになっているホットスポットに対処したほうが良い成果を得やすい
      • 個人的には↑は特に意識してやりたい