7以上、10以下で実行 - 事前条件を少し考えた。
2008/04/27
groovy
java
雑記
条件
値が7以上、10以下の場合にのみ実行 されるメソッドを考えてみた。
Javaを想定してます。
簡単に、そのメソッド自体に条件判定をさしこむ。
こんな感じになると思う。
static void a(int v){
if(!(7 <= v && v <= 10)) return;
System.out.println("processing...");
}
if(!(7 <= v && v <= 10)) return;
System.out.println("processing...");
}
次に、そのメソッドの実行条件はメソッドの外で保証されいると考えてみる。
こんな感じになると思う。
{
if(!(7 <= v && v <= 10)) return;
a();
}
if(!(7 <= v && v <= 10)) return;
a();
}
この実行が許される条件を、ガード条件と呼んでよいと思うのだけど、どこにおくかっていうのは、重要かなと。
AOPのような手法を使って後から、メソッドに差し込むっていうのもあるかな。
アノテーションとか使って解決するっていうのもあるかもしれない(多分)、その場合って別の処理系が必要なのかなぁ。
で、次にGroovyでクロージャで考えてみた。
ガード条件、ロジック、実行者
ガード条件はあとから差しかえやすくなることをイメージしてるんだけど...
// ガード条件
def guard = {p, v ->
if(!(7 <= v && v <= 10)) return
p()
}
// ロジック
def a = { println "processing..." }
// 実行者
def exe = {g, p, v -> g(p, v) }
exe(guard, a, 7)
def guard = {p, v ->
if(!(7 <= v && v <= 10)) return
p()
}
// ロジック
def a = { println "processing..." }
// 実行者
def exe = {g, p, v -> g(p, v) }
exe(guard, a, 7)
: