I was debugging someone else's code the other day (it was htmltools, 
actually) and I was in the middle of some function trying to figure out 
what it does.  That's when I noticed that I had no clue what the passed in 
parameter was.  I mean, I can see how it was used but it really didn't 
reveal what it was.  In fact, it could have been anything.  I could have 
tried to do a search to see when this method was called and try to 
investigate what was passed in at each instance but that would not 
necessarily be revealing since the object may not have been created in 
those methods and, instead, passed into them.
    The problem is that dynamic typing, while very powerful, also hid the 
intent of the method.  Obviously, any object that satisfied whatever the 
method was trying to do will suffice as a parameter, and that would be the 
point of duck typing, there was obviously some concrete example of some 
type the method was expecting.  It would really have helped to let me know 
what that was...
    Now, the answer to this is simply better documentation.  Write a damn 
comment that says what the method is expecting and, hell, while you're at 
it, you could mention what the method does, too.  However and 
unfortunately, I've been a professional programmer way too long to expect 
code to come with good documentation.  Out here, in the real world, you're 
lucky if the code works...
    Has anyone noticed this?  How do you deal with this issue?
    Thank you...