News for hackers. Stuff that matters.
Re:The Code Documentation Fallacy by mercurial on Thursday October 17, 2013 @10:46AM (#6565681)
Don't get me started on Javascript. It's a problem with dynamic languages in general - the signature does not document what interface the parameters should implement (eg, a parameter 'file' may be a file path or a file handle, but you'll only know that by looking at the implementation), but it's particularly egregious when nothing tells you at first glance which parameters are optional.

I've now started to document public functions. As my classes usually have few public functions, but many private ones, the code to comment ratio remains acceptable, though maintaining the documentation remains a challenge.

Re:The Code Documentation Fallacy by bookface on Thursday October 17, 2013 @01:20PM (#6566730)
Agreed completely about how awful dynamic languages can be in this respect. I've found what helps a lot is consistent naming of parameters. For example, numberOfWidgets (an integer) versus widgets (a collection) or file (a file handle) versus path (a string).
Re:The Code Documentation Fallacy by mercurial on Thursday October 17, 2013 @02:22PM (#6567186)
Sure, consistent naming helps a lot (though I'm partial to short-yet-readable alternative like widgetCounts). Sadly, sometimes ambiguity is unavoidable. And other times, you're just dealing with bad code.

But consistent naming does not help with the "optionality" of parameters.

Re:The Code Documentation Fallacy by acjohnson55 on Friday October 18, 2013 @01:08AM (#6569870)
In that sense, dynamic languages often have a jump on their functional counterparts. Relying on the type annotations for all documentation is probably the other side of the coin. I understand that generic combinators sometimes need sufficiently general argument names, but even then, there's often some semantic meaning that can be attached with a self-documenting variable name. Enough with the 1- and 2-letter variable names!
Re:The Code Documentation Fallacy by vizeroth on Friday October 18, 2013 @01:35AM (#6569943)
It's JavaScript, they're all optional.

Just start passing a single object parameter or using the arguments object and force everything into the documentation. Then it'll be just like 90% of libraries that depend on jQuery, especially once the code has been patched, updated, and maintained a year beyond the documentation.