同じ処理は1つの関数に纏める(関数リファクタリング①)

新規開発・機能追加を行っていると、同じ処理(=同じコード)を、再び書かなければならないことが頻繁にあります。このような場合、皆さんはどのように対応するでしょうか?

  • 同じ処理が別の所にあることを知った上で、あえてコピー&ペーストする
  • 自分が同じ処理を別の所に作ったことを忘れ、また新たに書いてしまう
  • 他の人が同じ処理を別の所に作っていることを知らず、また新たに書いてしまう

どれも”あるある”です。このように、複数個所に点在する同じ処理を「クローン(コード)」と言います。クローンは私たちに様々な悪影響を与えます。

もしクローンを見つけた場合、即座に処置することをお勧めします。クローンは放置すると、増殖してしまいます。それでは、どのように処置をすれば良いのでしょうか?

その処置が「関数リファクタリング」です。関数リファクタリングはソースコードを改善する重要なテクニックです。イメージ図は下図の通りです。クローン部分を手術の様に摘出し、新しい関数に包んで纏めます。こうすることで、今まで点在していたクローンが1ヵ所に集約されます。

 

クローンにも何種類かパターンがあります。そのうち最も簡単なパターンに対する関数リファクタリングをご紹介します。