😲

2つの帽子を知る

2021/03/01に公開

2つの帽子

2つの帽子とは、Kent Beckが考案したリファクタリングを行う作業を区分した例えです。

Kent Beckは、ソフトウェア開発でリファクタリングするときは下記の二つに作業を区分すべきと言っています。

機能追加

機能追加時に気をつけること

  • 既存のコードを変更してはいけない
  • 単に機能を拡張することに専念する

リファクタリング

リファクタリング時に気をつけること

  • 機能追加を行ってはいけない
  • コードの再構築に専念する
  • テストの追加をしてはいけない(テストケース漏れの追加, インターフェース変更への対象は例外)

帽子のかぶり方

普通、人は帽子を一つしかかぶらないはずです (僕が知る限りでは)
そのため2つ帽子があるときは、どっちをかぶるか考えないとです。

ユースケース

  • 新しい機能を追加するタスクが発生
  • 既存のコードの構造を少し変更するだけで簡単に機能追加ができることを発見
  • リファクタリングの帽子をかぶる
  • コードの改修が終了
  • 機能追加の帽子をかぶる


  • 機能追加をしていたら少し分かりづらい箇所があることに気づく
  • リファクタリングの帽子をかぶる

いつリファクタリングをすべきか

三度目の法則

  • 初めは単純な作業を行う
  • 2度目に以前と似たようなことをしていると気づいたら、意識はしつつ作業を続行する
  • 3度目に同じようなことをしていると気付いたらリファクタの開始

つまり、仏の顔も三度までということですね。。w

参考文献

今回参考にした文献は下記なのですが、こちらとてもいい本なのでおすすめです。
初版は、Javaでの解説だったのですが、第2版はjavaScriptを利用しています。
javaScriptの為のリファクタリング本ではないので、そこは気を付けてください。

リファクタリング(第2版): 既存のコードを安全に改善する

Discussion