普段仕事でコーティングする際に心がけているのは、なるべく単純な機能に処理を分けて、機能を組み合わせることでシステムとして必要な機能を実現ことです。
例外もあって、処理を分け切れない場合もありますが、例外がないように考えるようにしています。
単純な機能に分けると、組み合わせる手間が増える気がします。
実際は、組み合わせる手間よりも、単純な機能によるわかりやすさ、チェックのしやすさ、流用のしやすさが勝ります。
チェックのしやすいさは、単純な機能しかないので、結果を見て正しいのか間違っているのかすぐにわかります。
流用のしやすさは、ほとんど同じで一部だけ違うという似たような機能を作ることになったときに、一部だけ違う部分を新たに作れば済みます。
ほとんど同じで一部だけ違うという似たような機能を作成するときに、リファクタリングすればいいやと実装して、後からリファクタリングしている時間が無かったり、同じ部分の修正が発生して2度手間で直したりといったことが、往々としてあります。
誰でもわかる リファクタリング入門 | 技術トピックス | ウルシステムズ株式会社
どのように機能をわけるべきか悩まされ、実装しているときには効果を実感しにくいです。
後から効果を感じることができるので、後から単純な機能で実装してよかったと実感することを期待して作成しています。