From: Clemens Hintze Date: 2000-06-21T06:38:01+00:00 Subject: [ruby-talk:03575] Re: Static Typing( Was: Waffling between Python and Ruby) >>>>> "Albert" == Albert Wagner writes: Albert> Exactly what does DBC mean in the context of this thread? Albert> -- Small is Beautiful Design By Contract In programming languages it is often implemented as enter/exit condition. Something like this pseudo code: def fib(f) pre { f > 0 and f.type < Integer } n, n1 = 1, 0 (f-1).times do n, n1 = n+n1, n end return n post { n > 0 and n.type < Integer } end In this example just after entering the method, the enter condition pre{} would be executed if the expression returns false an exception should be thrown. Just before the method would be left the exit condition post{} would be executed to check e.g. the result of the method. In this stupid example the enter condition would be, that one can only ask for the fibonacci numbers if 'f' is greater than zero. The result has also to be greater then zero. Both numbers 'f' and 'n' has to be instances of class Integer or one of its subclasses. So if I feed the method fib with '0', '-1' or even '1.2' execptions should be raised. This was only one way how to use DBC in an implementation. The interesting thing is how to design such contracts (pre/post conds) together with your app. HTH, \cle