tyk.tumblr

リファクタリング (refactoring) とはコンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること。

リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。

しかし、プログラムには必ず変更があり、プログラムはどうしてもつぎはぎだらけになることは避けられない。仕様が開発開始時から確定していることは少なく、開発をしている間にもソフトウェアに対する要求は日々変わり続けており、ソフトウェアには常に仕様変更に対応できる柔軟さが求められる。また、いくら厳密に設計しても実際に動作させないと分からない部分も多く、完璧な設計を行うことは不可能である。変更が必要になったときに、二度と手を触れられないほど煩雑になったソースコードを修正することは困難で、プログラマにも非常に勇気が要求される作業になる。

そこで、Smalltalkプログラマなどの間で、常日頃からプログラムを整理し仕様変更にも対応できる整理されたプログラムを書いていく考え方が生まれた。この過程では、ウォード・カニンガム、ケント・ベック、ラルフ・ジョンソン(GoFの一人)などの人々が大きな役割を果たした。この手法がリファクタリングと呼ばれている。またリファクタリングはプログラムの全容を捉えるためにも効果的である。バグが見つかったときも、ソースコードが整理されているので修正しやすい。プログラマとしても、普段から修正しているコードにまた手を入れるだけなので、修正にも積極的になれる。また設計者も設計ミスによる心残りをなくすことができる。設計の代用にもなる、とする意見もあり、事前設計を非常に簡素化する役目も持つ。

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

同じ見た目の絵を描くのでもその作業工程やレイヤー構成などが徐々に簡素化されていくから、これもある意味リファクタリングのようなものなのかも。単に作業の最適化ってだけで、別にこの言葉を出すほどの意味はないかもしれないけれど、なんとなく示唆的なものはあるかなと。

Comments
blog comments powered by Disqus