Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

F#は保守案件を改善する

F#に関心はありますが、まだコードを書いたことはありません。知識だけですが、関数型言語に感じていることを書いてみます。

関数型言語のメリット

私が困難だと感じる開発案件は、スパゲッティコードの保守案件です。保守案件はできるだけ以下の手順で進めるようにしています。

  1. 既存のコードをパスするユニットテストのコードを書く。
  2. テストコードをパスする状態を保ちながら、既存コードを変更する。

この流れで作業すれば、少なくともデグレードが発生しないことは保証できます。

ところが、スパゲッティコードは激しく他の要素に依存している(例:グローバル変数をあちこちで読み書きしている)ので、コードを修正して依存性を排除しないとテストコードが書けないのです。

つまり、安全に修正するにはテストコードが必要だが、テストコードを書くには先に修正しないといけない...

関数型言語が、このジレンマを解決する手段になり得ると思っています。

関数型言語は「状態」を持ちません(と私は理解しています)。これは依存性が排除されることを意味するからです。