2011-12-30 10 views
-4
if(true) 
    if($i == 2) 
     callMethodOne(); 
    elseif($i == 3) 
     callMethodTwo(); 
    else 
    { 
     callMethods1(); 
     callMethods2(); 
     //so on 
    } 
else 
    callMethodFiftyFive();  

それは悪いですか?文章の場合。角括弧を1回だけ使用する

+0

あなたや会社が言っているとおりです。 –

+1

試してみてください!それがうまくいくなら、あなたはそれに従うことができます、それは良いです。それが混乱しているように見える場合(そうでない場合)、または動作しない場合(動作する場合)、それは悪いです。 – Dan

+0

私のお金のためにおかしいビット:)しかし、それはまったく主観的な質問なので、正しい答えはありません。 –

答えて

2

私は、特に小さな、孤立したスクリプトの場合、特に悪いとは言いません。しかし、このようなことは、より多くのコード、より複雑なコード、そしてより重要なことにはプログラマーの数を増やす作業を始めると問題になります。

コード化基準を選んで遵守することをお勧めします。 Manual :: Coding Standards

個人的に

、私は少なくともは、最初のブロックの周りにカッコ含まれます:

if(true) 
{       // Added this 
    if($i == 2) 
     callMethodOne(); 
    elseif($i == 3) 
     callMethodTwo(); 
    else 
    { 
     callMethods1(); 
     callMethods2(); 
     //so on 
    } 
}       // Added this 
else 
    callMethodFiftyFive(); 

私はワンライナー用ブラケットを省略し、このように:たとえば、PEARは自分のコーディング標準を公開してい

if (foo) 
    if (baz) 
     spam(); 
    else 
     eggs(); 
:のような、より複雑な何のための
if (foo) 
    bar(); 

ネヴァー

それはあなたが括弧を省略してきたことを忘れて、その最初の「ブロック」内で何かを追加することは非常に容易であるとして:

if (foo) 
    NewCall(); 
    if (baz)  // WOAH! this now happens regardless of "if (foo)"! 
     spam(); 
    else 
     eggs(); 
1

いや、そうでもありません。角かっこを省略するときは注意してください。ifelseifに行を追加すると問題に遭遇します。

すでに確立されているスタイルの環境で作業している場合は、まずそれに従います。グループによってはcallMethodOne()ifと同じ行になることを望んでいるグループもあれば、常にブラケットを使用することが望ましいグループもあります。一貫性を保ち、あなたは大丈夫です。

1

これらのブロックのいずれかにデバッグステートメントを挿入すると、面倒になることがあります。または1つを取る。または、別の関数呼び出しを追加します。またはもう一度削除します。あなたが単線のブロックを避けることについてOCDでない限り、本当に問題にはならない。

1

私はそれを避ける - 私は、単一のifを持っているとthen結果の短い、一行場合、私は中括弧を使用していない唯一の時間は次のとおりです。

if (someThing) doSomethingElse(); 

は、そうでなければ、私はいつも「日を使用します。

1

コンピュータにとって正当なものは、常に人間にとって最も理解できるコードではありません。

このスタイルはエラーを招く可能性があります。

elseがない場合(または同様に、無力な場合)、braceless-ifには、単一の文を追加して何が起こるかを考慮してください。制御の流れは、インデントが示唆しているものではありません。

if(true) 
    callMyOtherMethod() 
    if($i == 2) 
     callMethodOne(); 
    elseif($i == 3) 
     callMethodTwo(); 
    else 
    { 
     callMethods1(); 
     callMethods2(); 
     //so on 
    } 
0

このコードには唯一の問題があります。 ifとelseの中に大量の文があるとしたら、コードをトレースしたり、実行していると、起動からさらに遠ざかるにつれてあなたはもっと難しくなるでしょう。

1

if/else文ごとに大括弧を使用することを強くお勧めします。どれくらいの数の線があっても。それははるかに読みやすくします。さらに、ifに余分な行を追加すると、実行する必要があるときに確実に実行されます。

たとえば、この例ではどのようなことが行われますか?ブラケット付き

​​

、それが読めるだ、とあなたは何が起こっているかを100%確信しています。

if(true) 
{ 
    callAnotherMethod(); // :-) 
    if($i == 2) 
    { 
     callMethodOne(); 
     callAnotherMethodAgain(); // :-) 
    } 
    elseif($i == 3) 
    { 
     callMethodTwo(); 
    } 
    else 
    { 
     callMethods1(); 
     callMethods2(); 
     //so on 
    } 
} 
else 
{ 
    callMethodFiftyFive(); 
    callThisOtherMethod(); // :-) 
} 
関連する問題