Last active
October 8, 2017 03:12
-
-
Save rikuTanide/d2ce4eec2e95012a49aaa5ab75289a0e to your computer and use it in GitHub Desktop.
純粋関数の割合を最大化
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** 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