I was on a team for a short while (Java programmers) and their frontend code was really overly "careful". For example, they would always check if a method existed, before calling it. var o = new SomeObject();
if (o.computeSomething != null && o.computeSomething != undefined) {
o.computeSomething(...);
}
Their reasoning was that in JavaScript (with the old syntax) you just add functions to the prototype, so you could forget to do it or mistype it. SomeObject.prototype.computeSomethinnn = function () ...
I was sort of tripping over myself in objections to what they were doing:* you shouldn't check for null or undefined, but rather do `o.computeSomething instanceof Function` * there's no need to do `!= null` and `!= undefined` because `!=` (as opposed to `!==`) actually checks for both * you shouldn't do the check at all because if you actually mistype the function name all you're doing is hiding the error. Failing sooner is better. * a missing method should be picked up in the unit tests (but they didn't have any tests at all because "our system is too complex to be tested automatically") * probably some others... That team really hated JavaScript and their code showed it. BTW, the indentation above is not wrong... they did indent by 3 spaces. I read a story about 3 space indents on thedailywtf.com and thought that it was clearly made up... after this team I believe it. |
It also helped when tutoring new python students -- when they mixed space-indented code they copied from the internet with tab-indented code they copied from the internet, they'd get all sorts of fun errors. Setting the tabwidth to an even number sometimes allows them to hide. 3, though, really makes them stick out.