Instantly share code, notes, and snippets.

Embed
What would you like to do?
純粋関数の割合を最大化
/** Original **/
void method1() {
var fuga = hoge(); // 何かしらの複雑な処理
method2();
}
void method2() {
var fuga = hoge(); // 何かしらの複雑な処理
method3();
}
void method3() {
var fuga = hoge(); // 何かしらの複雑な処理
db.Put(fuga - new DateTime.now().millisecond); <- ***一番深い関数の中で非参照透過な計算と副作用のある処理をしている***
}
/** Good **/
void method1() {
var fuga = hoge(); // 何かしらの複雑な処理
db.Put(method2(new DateTime.now())); <- ***一番浅いメソッドで関数外にある値の取得と副作用のある処理の実行***
}
// この関数は純粋にできる
int method2(DateTime now) {
var fuga = hoge(); // 何かしらの複雑な処理
return method3(now);
}
// この関数は純粋にできる
int method3(DateTime now) {
var fuga = hoge() - now.millisecond; // 何かしらの複雑な処理
return fuga;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment