Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #16846

Re: Programming style question

From Stefan Weiss <krewecherl@gmail.com>
Newsgroups comp.lang.javascript
Subject Re: Programming style question
Date 2012-10-25 01:11 +0200
Organization albasani.net
Message-ID <k69sis$vc$1@news.albasani.net> (permalink)
References (9 earlier) <XnsA0F5E78026978eejj99@194.109.133.133> <722e889us0ep0mra233907giq2nnolqhge@4ax.com> <XnsA0F6619B1C3Ceejj99@194.109.133.133> <k69fb6$530$1@news.albasani.net> <3335047.320Uf1SXUN@PointedEars.de>

Show all headers | View raw


I've been waiting for this... It seems that every time I post code to
this group, I get a reply filled with pedantic nitpicks and irrelevant
criticism from you. I do enjoy constructive feedback, but all this
disagreeing for the sake of disagreeing is a waste of everyone's time.
Especially when you intentionally misinterpret short code examples as
something they were never meant to be.

Anyway...

On 2012-10-24 21:57, Thomas 'PointedEars' Lahn wrote:
>>   // DOM0 event handler
>>   document.onclick = function (evt) {
>>       var e = evt || window.event;
>>       ...
>>   };
> 
> This is error-prone if `evt' refers to a host object, and unnecessarily 
> inefficient.  And document.onclick?

This is a simple example of one very common usage of the || operator,
not an endorsement of DOM0-style event handling, so yes, document.onclick.

As for error-prone, that's a huge exaggeration. It's true that the event
object is a host object, but this particular form of checking for an
event object as the first argument has been widely used without problems
since the mid 90s. Defensive programming is a good habit, but it can be
carried to far.

And "inefficient"? In a click handler? This statement will be evaluated
(at most) once every time the user clicks. I'm quite certain that any
difference in performance between this example and whatever you would
offer as an alternative cannot even be measured under these circumstances.

>>   // initialize a "namespace" object without overwriting it
>>   var myLib = myLib || {};
> 
> This is unnecessarily complicated.  An `if' statement will do better and 
> will be slightly more efficient.

So you would prefer one of these?

if (!myLib) {
    var myLib = {};
}

if (typeof myLib == "undefined") {
    var myLib = {};
}

What I wrote looks less complicated to me, but in the end it's just a
matter of personal taste. As with the first example, the efficiency of
this statement is completely irrelevant in the typical case (i.e., at
the beginning of an included file). Your version may save a single
assignment, and only if myLib already exists. Why worry about such details?

>>   myLib.myFunc = function () { ... };
>> 
>>   // call a method on an optional argument
>>   function findParagraphs (parentEle) {
>>       return (parentEle || document).getElementsByTagName("p");
>>   }
> 
> This can be error-prone.  In particular, there is a problem when expression 
> in the `||' operation is a reference to a Function instance.  Some functions 
> can only be called as methods of an (specific) object.

You're imagining things, my overly critical friend. As you can guess
from the code, this function is intended to be called with an element
node, or no arguments. Pass an unsupported argument and you will get an
error. If that's your definition of error-prone, you will need to check
each end every argument in every single function. Sure, that's possible,
but if you do that, stop complaining about inefficient code.

>>   // combining && and ||
>>   function textOfFirst (parentEle, eleName) {
>>       var ele = parentEle.getElementsByTagName(eleName)[0];
>>       return ele && ele.firstChild && ele.firstChild.data || "";
>>   }
> 
> This is error-prone as the return type would vary (one of Null, Element or 
> descendant, Text, or String) depending on runtime conditions that one has 
> virtually no control over.  (In fact, the first line is error-prone already 
> as null has no properties).  To be avoided.

Please explain how this function can possibly return anything other than
a string (under non-pathological* circumstances).

Again, if you insist on passing unsupported arguments to a function, you
deserve what you get.


- stefan


*) The only way I can think of to create such an outcome would be to
augment the first child node of the first 'eleName' descendant of
'parentEle' with a custom non-string .data property, thereby shadowing
the DOM property (the .firstChild property cannot be shadowed, AFAIK).
That would be a very stupid thing to do, and I don't cater to stupidity.
YMMV. If you're writing a general purpose library for the unwashed
masses, you'll have to do more handholding.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-18 08:32 +0100
  Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-18 10:23 +0200
    Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-18 13:42 +0100
      Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-18 17:59 +0200
        Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-18 09:56 -0700
          Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-19 00:49 +0200
            Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-19 11:04 -0700
              Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-20 11:52 +0200
            Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-19 12:06 -0700
              Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-19 23:12 +0100
                Re: Programming style question "Mel Smith" <med_cutout_syntel@aol.com> - 2012-10-19 21:56 -0600
              Re: Programming style question Bart Van der Donck <bart@nijlen.com> - 2012-10-20 02:21 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-20 12:03 +0200
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-20 06:31 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-20 18:30 +0200
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-20 10:32 -0700
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-20 22:34 +0100
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-21 10:12 +0200
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-21 09:34 +0100
                Re: Programming style question Dr J R Stockton <reply1242@merlyn.demon.co.uk.invalid> - 2012-10-21 17:59 +0100
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-22 09:55 +0200
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-22 09:50 +0100
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-22 04:49 -0700
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-22 14:04 +0100
                Re: Programming style question Hans-Georg Michna <hans-georgNoEmailPlease@michna.com> - 2012-10-22 16:07 +0200
                Re: Programming style question Dr J R Stockton <reply1243@merlyn.demon.co.uk.invalid> - 2012-10-23 18:22 +0100
                Re: Programming style question Hans-Georg Michna <hans-georgNoEmailPlease@michna.com> - 2012-10-22 16:01 +0200
                Re: Programming style question Jim T. <x@y.z> - 2012-10-22 12:16 -0400
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-22 11:40 -0700
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-22 14:01 -0700
                Re: Programming style question Hans-Georg Michna <hans-georgNoEmailPlease@michna.com> - 2012-10-23 10:07 +0200
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-23 09:43 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-23 11:49 +0200
                Re: Programming style question Jim T. <x@y.z> - 2012-10-23 15:52 -0400
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-23 13:07 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-23 22:45 +0200
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-23 14:14 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-24 09:35 +0200
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-24 10:17 -0700
                Re: Programming style question Dr J R Stockton <reply1243@merlyn.demon.co.uk.invalid> - 2012-10-25 18:41 +0100
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-25 17:03 -0700
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-25 20:14 -0700
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-25 20:46 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-26 09:55 +0200
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-26 06:18 -0700
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-26 17:43 +0200
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-26 09:57 -0700
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-26 10:24 -0700
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-26 14:18 -0700
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-27 10:45 +0200
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-27 12:58 +0200
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-27 16:18 +0200
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-27 18:08 +0200
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-27 18:26 +0200
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-27 19:43 +0200
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-27 21:09 +0200
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-27 22:53 +0200
                Re: Programming style question John G Harris <john@nospam.demon.co.uk> - 2012-10-28 11:37 +0000
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-28 12:50 +0100
                Re: Programming style question Martin Leese <please@see.Web.for.e-mail.INVALID> - 2012-10-28 13:43 -0600
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-28 23:58 +0100
                Re: Programming style question John G Harris <john@nospam.demon.co.uk> - 2012-10-29 11:18 +0000
                Re: Programming style question Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2012-10-27 23:58 +0200
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-28 12:43 +0100
                Re: Programming style question Dr J R Stockton <reply1243@merlyn.demon.co.uk.invalid> - 2012-10-27 19:44 +0100
                Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-24 12:06 -0700
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 21:27 +0200
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-10-24 15:12 -0700
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-10-25 01:29 +0100
                Re: Programming style question Stefan Weiss <krewecherl@gmail.com> - 2012-10-24 21:25 +0200
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 21:57 +0200
                Re: Programming style question Stefan Weiss <krewecherl@gmail.com> - 2012-10-25 01:11 +0200
                Re: Programming style question Christoph Becker <cmbecker69@gmx.de> - 2012-10-25 02:00 +0200
                Re: Programming style question Scott Sauyet <scott.sauyet@gmail.com> - 2012-10-24 20:27 -0700
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-25 08:44 +0200
                Re: Programming style question Adam Silver <adambsilver@gmail.com> - 2012-10-25 04:28 -0700
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-25 23:18 +0200
                Re: Programming style question Scott Sauyet <scott.sauyet@gmail.com> - 2012-10-26 08:24 -0700
                Re: Programming style question Stefan Weiss <krewecherl@gmail.com> - 2012-11-07 22:13 +0100
                Re: Programming style question Tim Streater <timstreater@greenbee.net> - 2012-11-07 21:51 +0000
                Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-11-07 23:47 +0100
                Re: Programming style question Stefan Weiss <krewecherl@gmail.com> - 2012-11-08 01:14 +0100
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-11-07 16:51 -0800
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-11-08 16:45 +0100
                Re: Programming style question Scott Sauyet <scott.sauyet@gmail.com> - 2012-11-08 08:02 -0800
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-11-08 17:39 +0100
                Re: Programming style question Gene Wirchenko <genew@ocis.net> - 2012-11-08 11:25 -0800
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-11-08 22:25 +0100
                Re: Programming style question John G Harris <john@nospam.demon.co.uk> - 2012-11-09 10:19 +0000
                Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-11-09 17:41 +0100
                Re: Programming style question Dr J R Stockton <reply1245@merlyn.demon.co.uk.invalid> - 2012-11-10 22:38 +0000
                Re: Programming style question Scott Sauyet <scott.sauyet@gmail.com> - 2012-10-22 12:32 -0700
                Re: Programming style question Hans-Georg Michna <hans-georgNoEmailPlease@michna.com> - 2012-10-23 10:05 +0200
                Re: Programming style question Christoph Becker <cmbecker69@gmx.de> - 2012-10-22 22:11 +0200
                Re: Programming style question Stefan Weiss <krewecherl@gmail.com> - 2012-10-23 02:42 +0200
                Re: Programming style question Hans-Georg Michna <hans-georgNoEmailPlease@michna.com> - 2012-10-23 10:08 +0200
              Re: Programming style question "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2012-10-20 18:34 +0200
  Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-18 11:57 +0200
    Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-18 13:06 +0100
      Re: Programming style question "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2012-10-18 15:32 +0300
        Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-18 13:37 +0100
          Re: Programming style question "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2012-10-18 15:55 +0300
          Re: Programming style question John G Harris <john@nospam.demon.co.uk> - 2012-10-19 10:12 +0100
            Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-19 07:24 -0700
              Re: Programming style question John G Harris <john@nospam.demon.co.uk> - 2012-10-20 17:47 +0100
          Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 01:15 +0100
            Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 01:31 +0100
            Re: Programming style question "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2012-10-24 07:34 +0300
              Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 19:57 +0200
                Re: Programming style question "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2012-10-24 21:02 +0300
        Re: Programming style question Patricia Shanahan <pats@acm.org> - 2012-10-18 20:15 -0700
      Re: Programming style question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-10-24 01:21 +0100
  Re: Programming style question Scott Sauyet <scott.sauyet@gmail.com> - 2012-10-21 17:57 -0700

csiph-web