Skip to content

Instantly share code, notes, and snippets.

@rikuTanide
Last active October 8, 2017 03:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rikuTanide/d2ce4eec2e95012a49aaa5ab75289a0e to your computer and use it in GitHub Desktop.
Save rikuTanide/d2ce4eec2e95012a49aaa5ab75289a0e to your computer and use it in GitHub Desktop.
純粋関数の割合を最大化
/** 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