Ron Jeffries wrote:

>  Have you used Smalltalk extensively? What happened when you did that
> made you feel that you needed interface specs?

Yes I have. What happened was I find it hard to understand how to use a method written by someone else when there is no indication of what kind of arguments should be passed to it.  It is also hard to say if it is right or wrong when there is no clearly written contract on "what it should do".  This might be specified by some test-case-class somewhere, but I'd rather have 'contract' of the method visible as soon as I view the method's source, so I don't have to go test-case hunting.

If I could clearly -speedily- see that  the method does not behave as advertized, I could quickly disregard it, rather than start thinking whether the error is somewhere in my code. The presumptions about the types of arguments could of course be specified by a test case somewhere in some test-case-class, but the original author might as well have forgotten to test for the argument being of the correct type. If the required type was indicated by some other means such as a naming convention for arguments, I could more easily see if the original author forgot to specify it.

-Panu Viljamaa