Loading ...
Sorry, an error occurred while loading the content.

2744RE: [jslint] Re: Ternary Indentation Question

Expand Messages
  • Rob Richardson
    Jan 18, 2012
      --- In jslint_com@yahoogroups.com <mailto:jslint_com%40yahoogroups.com> ,
      douglascrockford wrote:

      --- In jslint_com@yahoogroups.com <mailto:jslint_com%40yahoogroups.com> ,
      "spence.randall@..." <randall@...> wrote:

      > Given the following example code:
      >
      > function test(x) {
      > ~~~~'use strict';
      > ~~~~return x === 1 ? 'one' :
      > ~~~~~~~~x === 2 ? 'two' :
      > ~~~~~~~~~~~~x === 3 ? 'three' :
      > ~~~~~~~~~~~~~~~~x === 4 ? 'four' : 'zero'; }

      > I would write it this way:

      > function test(x) {
      ~~~~'use strict';
      ~~~~return x === 1
      ~~~~~~~~? 'one'
      ~~~~~~~~: x === 2
      ~~~~~~~~? 'two'
      ~~~~~~~~: x === 3
      ~~~~~~~~? 'three'
      ~~~~~~~~: x === 4
      ~~~~~~~~? 'four'
      ~~~~~~~~: 'zero';
      }

      > The placement of ? and : makes it easier to read them as then and else if.

      If the point is clarity, this is much clearer:

      function test(x) {
      ~~~~'use strict';
      ~~~~var y = 'zero';
      ~~~~switch(x) {
      ~~~~~~~~case 1:
      ~~~~~~~~~~~~y = 'one';
      ~~~~~~~~~~~~break;
      ~~~~~~~~case 2:
      ~~~~~~~~~~~~y = 'two';
      ~~~~~~~~~~~~break;
      ~~~~~~~~case 3:
      ~~~~~~~~~~~~y = 'three';
      ~~~~~~~~~~~~break;
      ~~~~~~~~case 4:
      ~~~~~~~~~~~~y = 'four';
      ~~~~~~~~~~~~break;
      ~~~~~~~~default:
      ~~~~~~~~~~~~y = 'zero';
      ~~~~~~~~~~~~break; // Technically not needed
      ~~~~}
      ~~~~return y;
      }

      After making this change, JSLint will note that "switch" and "case" should
      be at the same indentation level.

      Rob
    • Show all 8 messages in this topic