Noesworthy

Functional core, imperative shell

関数的コア、命令的シェル

コアは中心

シェルは外殻

メソッドをユニットテストしやすくするための考え方

例えば、「記事を公開したら投稿者のフォロワーにメール通知する」機能があったとして

処理の内容は

だとすると

I/Oが絡むものは全部シェル(外殻)に押し出したい

これでいうとメールタイトルや本文ぼ組み立て以外は全部I/Oがある

だから、こういう処理にする

【シェル】

[メール送信対象ユーザーの情報を渡す]

【コア】

【シェル】 メールアドレスとメール本文のリスト一行ごとに

この方法だと、コアの部分は他のサービスへの依存ゼロ、ということはつまり、モックゼロでテストできる

純粋関数というらしい

要件次第でコアがないこともあるらしいけど

ロジックらしきものがあるときはこんなふうに純粋化するといいかも

パズルみたいで面白いねぃ

関数型プログラミングの考え方らしいけどオブジェクト指向でも全然使えるって思ったぃ

#blog