I'm working with some code that's written in Python, and makes extensive use of duck typing. In duck typing the premise is that if it quacks like a duck, it is a duck.
Of course, if you've got code that doesn't tell you what it expects to receive, you can't hope to figure out what the type should be.
For example, let's say you've got 3 code blocks:
class A: def funkyDuck(): # random cool stuff class B: def funkyDuck(): # entirely different cool stuff class C: def funkyDuck(): # a third entirely cool thingNow, imagine you're looking at code that goes:
some_random_object.funkyDuck()Which one gets called? By the way, they're all in different files, so the only way to find them is with "grep". Added bonus, the undocumented hash!
def addApplications(self, appDict): """ Add some application modules to the defaults. All binaries and libraries in any of the source dirs will be soft linked to a directory with the name of the product. @type appDict: dict of string -> (list, string) @param appDict: The source dirs and OS user name for each product """
Guess I'm supposed to guess what appDict actually looks like.
Hrm. Perhaps my problem isn't with duck typing itself, but it's use here.
Hint: When your test framework is just as complicated as the program under test, you're doing something very, very wrong.