matobaの備忘録

育児しながら働くあるエンジニアの記録

リファクタリングについて調べはじめた

リファクタリングして欲しい。と言われたが、リファクタリングに対する理解が浅く、何をすればいいのかわからなかった。

調べた。

リファクタリングの背景について

リファクタリング (プログラミング) - Wikipedia

wikipediaにあった。

  • もともと、ソフトウェア開発は、完璧な設計をしてから製造しようとするスタイルだった。(製造と変更のコストが大きい前提のスタイル)
  • ソフトウェアに対する要求が変化・拡張する速度が早く完璧な設計が不可能なことがわかった。
  • 継続的に設計を改善する手法が生まれ、リファクタリングと名付けられた。

要するに、リファクタリングは、設計を改善する手法をさす。転じて、その手法を適用することは『リファクタリングする』と呼ばれるようになった。(と理解した)

だから、『リファクタリングしてよ。』というのは『設計を改善してよ』ということをさすのかなと思った。

リファクタリングの目的について

このページみた。

- リファクタリングとは何か?

  • ソフトウェア設計を改善させる
  • ソフトウェア設計の劣化を防ぐ
  • ソフトウェアを理解しやすくする
  • バグを見つける
  • より早くプログラミングする

要するに、拡張と改良が繰り返しされるソフトウェアにとってリファクタリングは、養分なんだと理解した。

リファクタリングされないソフトウェアは、食事がもらえない人と同じで弱っていく。そして最終的には、誰もさわれなくなる。ソフトウェアを拡張したのにリファクタリングしないというのは、ソフトウェアを殺そうとする行為に等しい。そんなニュアンスで理解した。

だから、プログラマとして、誰かがクソコードを混入させようとしたら、ブチ切れていい案件。

リファクタリングとは何か

この辺りを読んでた。

誰でもわかる リファクタリング入門 | 技術トピックス | ウルシステムズ株式会社

ここを読んでると、リファクタリングと言うのは、ある本に書いてある手法で、手順があることらしい。マジか。

原著があって、この本が新しい本らしい。

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

とりあえず買った。

リファクタリングのタイミング

この辺り読んだ。

- リファクタリングとは何か?

前職時代は設計と言うと、データフローを作る、仕様を作ること、オブジェクトの関係を整理すること、みたいな概念的な話が中心でだったから、その感覚が抜けずに『設計を改善するってどういう意味だろう』と思ったけど、自分がずれている部分に一つ気づくことができた。