[H8-ML(4737)] Re: if文の書き方
From: FUJIHARA Keiichi <keiichi@xxxxxxxxxxxxx>
Date: 2004年05月10日(月)14時58分12秒
藤原です。

This message is reply to Henry of OB. - san
(Subject was : [H8-ML(4734)] Re: [H8-ML(4733)] Re: if文の書き方)

Message-ID: <000501c43647$0c34eeb0$4001a8c0@PCB>
in Mon, 10 May 2004 13:27:04 +0900 ...

> 脱線つでにもうひとつ!
> 
> 頭が悪く、はっきりしてないと間違いやすい
> 私の場合、
> 
> if(エラー条件1)
> {     エラー処理1
> }
> else  
> {    if(エラー条件2)
>      {    エラー処理2
>      }
>       else
>      {    正常処理
>      }
> }
> 
> と、依存関係を明示的に書きます。

 これは、文法上の形に従った書き方なわけですよね。
 確かに文法的に言えば、

  if (n == 1) 
  {
     error(1);
  }
  else if (n == 2)
  {
     error(2);
  }
  else if (n == 3)
  {
     error(3);
  }
  else if (n == 4)
  {
     error(4);
  }
  else if (n == 5)
  {
     error(5);
  }
  else
     normal();

 という書き方は、else のあとが1文であれば、{} は省略できる、とい
うのとif 文は全体で1文として扱われるというのとを利用した、少々虚を
ついた書き方に見えることでしょう。

 しかし、これを、


  if (n == 1) 
  {
     error(1);
  }
  else 
  {
     if (n == 2)
     {
       error(2);
     }
     else
     {
       if (n == 3)
       {
         error(3);
       }
       else
       {
         if (n == 4)
         {
            error(4);
         }
         else
         {
            if (n == 5)
            {
               error(5);
            }
            else
            {
               normal\();
            }
         }
       }
    }
  }

 と比べたときに、わかりやすいのはどちらかということになると思います。
 また、プログラマの思考が、もしも、
 「エラー条件1でもなくエラー条件2でもなくエラー条件3が発生したとき」
 でなく、
 「(他の条件はどうあれ)エラー条件3が発生したとき」
 に、エラー処理3をしたいのであれば、その発送を直接反映しているのはど
ちらなのかということです。

 これにかんしては、いわゆる、K&Rの、「The Programing Language C」
でも、IF - else とは別に、わざわざ、3-3 Else - if という項目をさいて
説明しています。

 もっとも、字下げの問題なのでやっていることは同じですが。

-- 
_/ -- Last  2292 hours until ATHENS 2004 Olympic Games -----------------
_/ FUJIHARA Keiichi
_/ E-Mail : keiichi@xxxxxxxxxxxxx <or> nagi@xxxxxxxxxxxxxxx
_/ URL    : http://www.keiichi.fujihara.name/
----------------------------------------------+----- Luna Phase 20.87 --
PGP FingerPrint = 7CC3 4F95 8CC7 87D3 7178  C348 CD65 7F08 D68F 69F6


スレッド概略
[4730(R)](起点)
 └[4734(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]