Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Mar 22, 2012 (Thu)

if (!condition) {} else {} を使うケース ( if (condition) {} else {} が好ましくないケース) 14:12 はてなブックマーク - if (!condition) {} else {} を使うケース ( if (condition) {} else {} が好ましくないケース) - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

if (!condition) {
  // foobar
} else {
  // barbaz
}

は ! をはずし、中身を入れかえた以下と全く同じ (あたりまえ)

if (condition) {
  // barbaz
} else {
  // foobar
}

一時期、「if の条件に ! がついてはいけない!!」という妄執にとりつかれて一律後者にしていたけど、最近はそんな変な呪いが解けていて、素直に書くようになった。

例えば何度も呼ばれる関数が処理のすすみ具合によって条件分岐をする場合、つまり条件よりも処理の中身の流れのほうが重要だと思われるケースでは、条件の否定肯定にはこだわらず、中身の順番を上から読み下せるように書くようにしている。

例えば以下のように1回目だけ完全に違う処理を走らせたい場合は、条件を否定にして先に走る処理を先に書く

function foo () {
  if (!arguments.callee.called) {
    arguments.callee.called = true;
    // first
  } else {
    // second or more
  }
}
 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク