Contenu connexe
Similaire à 契約プログラミング (20)
Plus de Oda Shinsuke (20)
契約プログラミング
- 25. 事前条件の例 - 実装 The Spec# programming system: An overview. より抜粋 http://research.microsoft.com/en-us/projects/specsharp/krml136.pdf
- 29. import org.gcontracts.annotations.* @Invariant({ speed >= 0 && speed <= 100 }) class Rocket { int speed boolean started @Requires({ !started }) def start() { started = true } @Requires({ started }) @Ensures({ old -> (speed - old.speed) > 0 }) def accelerate() { speed += 10 } } class BetterRocket extends Rocket { @Override def accelerate() { speed += 20 } } defbetterRocket = new BetterRocket() betterRocket.accelerate() http://blog.andresteingress.com/2010/07/12/gcontracts-1-1-2-released/
- 30. Interface にも設定可能 @Contracted がついてるパッケージ、クラスを AST 変換対象とする 「ContractGroovyDoc」 Antタスクで、ドキュメントに事前/事後条件を出力出来る …ほかにもまだまだあります。 http://blog.andresteingress.com/2011/03/11/gcontracts-1-2-0-released/ 1.2 からの新機能
- 31. メソッドのパラメータが Not Null とか、メソッド毎に仮引数名違うしめんどくせー 似たようなの書くのマンドクセ('A`) AnnotationContract @Precondition @AnnotationContract({ it != null }) public @interface NotNull {} class Tester { defdoSomething(@NotNullparam) { println "hello world: ${param}" } } http://blog.andresteingress.com/2011/03/31/getting-started-with-annotation-contracts/