なぜこのようなコードが多いのでしょうか?

 

私は、人々が自分のコードを投稿するときに、これをよく見ます。

if(a==b){
Dothis;
Dothis;
etc;
}

他人のコードを短時間で読む分には問題ないのですが、大量のコードを読むとなると、ほとんどついていけなくなります。

しかし、多くのコードがある場合、それを追うのはほとんど不可能になります。

多くの人が、自分のコードにあるエラーを見つけるのに苦労していると思うのです。

なぜ、そうならないのでしょうか?

if(a==b)
{
Dothis
Dothis
etc
}

//Or

if(a==b)
  {
  Dothis
  Dothis
  etc
  }

 

前者のスタイル(K&Rスタイル)でも(インデントされていれば)何も問題はありません。この種の構文を持つ言語(C、Java、Perl)ではよく使われます。

例えば、これはJava Standardで、IMOではかなり読みやすいとされています(正しくインデントされている限り)。 [mql4はC言語の構文から多くを借りているので、他の言語について言及するのは適切だと思います。]

しかし、インデントする必要があります。


if(a==b){
   Dothis;
   Dothis;
   etc;
}


2番目の例(Allman style)も、一部の人に好まれており、より読みやすいと一般的に言われています(これもインデントが正しくされています)


if(a==b)
{
   Dothis;
   Dothis;
   etc;
}

しかし、あなたが否定しているような方法は、(読みやすさの理由から)他ではかなり人気があります。

後者の例は、私は全く好きではありません。

 

また、allman styleは、特に複雑なif else treeにおいて、中括弧の欠落を容易に発見することができます。

 

ブレーススタイルはプログラマーの好みであり、正しい方法と間違った方法はないと思っています。K&Rのスタイルがベストです;-)。なぜ、開始波括弧のために1行余計に取るのか......私が本当に気にするのは、それがどのif{statement}に属するかです。例: 見た目が良く、理解しやすいもの。

if(.............................)
    {
    if(.............................)
        {
        if(.............................)
            {
            if(.............................)
                {
                if(.............................)
                    {
                    if(.............................)
                        {
                        if(.............................)
                            {
                            if(.............................)
                                {
                                if(.............................)
                                    {
                                    if(.............................)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

あるいはこのバージョン。

if(.............................){
    if(.............................){
        if(.............................){
            if(.............................){
                if(.............................){
                    if(.............................){
                        if(.............................){
                            if(.............................){
                                if(.............................){
                                    if(.............................){
}   }   }   }   }   }   }   }   }   }

そして、さらに良いのが

if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
if( !.............................) return
最後のバージョンは、私が実際に書いている方法より自然な感じがします。一行一行。
 

私はこうしています。

if(.............................)
{if(.............................)
 {if(.............................)
  {if(.............................)
   {if(.............................)
    {if(.............................)
     {if(.............................)
      {if(.............................)
       {if(.............................)
        {if(.............................)
}}}}}}}}}
 

議論が好きです。

そして、else 文のコーディングの好みについてはどうでしょう 私は最初の例が好きですが、エディタによってはこのようなブロックを折りたたんだり広げたりできないものもあります。2番目は妥協の産物です。3番目はさらに一貫性がありますが、読みにくいです。

if (cond) {
   command;
} else if (cond) {
   command;
} else {
   command;
}

or

if (cond) {
   command;
}
else if (cond) {
   command;
} 
else {
   command;
}

または

if (cond) {
   command;
} 
else {
   if (cond) {
      command;
   }   
   else {
      command;
   }  
}
 
ある程度は問題ではありません。重要なのは、選んだスタイルを一貫して適用することです...もちろん、人にはそれぞれ好みがあります。
 

もうあまりelseは使っていません。少し前に一度だけ、elseを使わざるを得なかった問題がありました(問題は覚えていません)。私がelseを使ったときは、次のような感じでした。

if (cond) { command; } else 
if (cond) { command; } else {
   command;
}

しかし、上記のようなコーディングで私が最初に教えるのは、次のようなものです。

if( cond ){ command; return; }
if( cond ){ command; return; }
command;

そう、3行のコードを関数に変えて しまうのです 8)))

 
SDC:

こうでなきゃ

個人的には、それは泥と同じくらい明確だと思います。
 
RaptorUK: 個人的には、それは泥と同じくらい明確だと思います。
目が痛くなる
 
RaptorUK:
ある程度は問題ではありません。重要なのは、選択したスタイルを一貫して適用することです......もちろん、人にはそれぞれ好みがあります。

Raptorに同意します。トピックは何でもないことです。私は、人々がSRCを使用せずにここに彼らのコードを投稿する場合、より多くの不満を感じています。彼らがどのようにプログラムをコーディングするかは、彼らが助けを 求めない限り、彼ら次第です。