2016-06-27 1 views
-1

でforeachの条件であればどのようなあなたのためのより良い実践と最高の読みやすさ:コードの読みやすさ:PHP

foreach ($k as $v) { 

    if($v == 10) { 
     continue; 
    } 

    // continue code ... 
} 

または:

foreach ($k as $v) { 

    if($v != 10) { 
     // code ... 
    } 

} 

は、多分それは愚かだが、私はしばしば自分自身にこの質問をします。 あなたはどう思いますか?

+0

私はより良い第2のものと一緒に行くと思います。 –

+3

それはここに意見に基づいていて、トピックではないです。 (私は、例えば、コードとロジックに基づいて選択し、より意味をなさないもの) – Rizier123

+0

私が理解する限り、第2のものはO(1)高速です。あなたは完全にそれを無視し、あなたの好む方法で行くことができます! –

答えて

0

この質問は、あなたが私の意見で扱っているコーディング標準に基づいています。

は私が

foreach ($k as $v) { 
    if($v != 10) { 
     // code ... 
    } 
} 

私は$vは、最初のオプションは、それが、同じ結果を継続していきますと言う10と異なっている場合にのみ、それが何かをすることを知っているだろう。この方法を好みます。しかし、コードがあると混乱するかもしれません。

答えはまだあなたの好みに基づいています。

+3

*多くの良い質問は、専門家の経験に基づいてある程度の意見を生成しますが、この質問に対する回答は、事実、参考文献、または特定の専門知識ではなく、概ね意見に基づいている傾向があります。彼らに決定的な答えは決してないからです。あなたが決してそれらに正しく答えることができないので、彼らに答えることは役に立たない。 – Rizier123

1

これは質問よりも多くの投票であり、正しい答えはありません。

しかし、一般的に、あなたの ifが否定であるか、容易に他のケースのように書かれている場合、私は continueとなるだろう ifif ($v == 10) {} else {/*...*/}のように)対応します。したがって、いくつかの例外を除いてすべてのケースを $vに実行したい場合は、開始時にこれらの例外をフィルタリングし、 continueを実行します。

だから、私は希望:

foreach ($k as $v) { 

    if($v == 10) { 
     continue; 
    } 

    // code ... 
} 

この理由は、より多くの例外が発生したとき、彼らはこのように簡単に追加することができるということです。確かに

foreach ($k as $v) { 
    if($v == 10 || $v == 29) { 
     continue; 
    } 
    if($v = 12) { 
     continue; 
    } 

    // ... code 
} 

、これも

if ($v != 10 && $v != 29 && $v != 12) { 
    // ... code 
} 

で達成することができるが、時間が追加されますように理想的ですよりも、このifはすぐに読んで理解するために、より複雑に成長することができ、複数の条件にスリットすることはできませんますます多くの例外があります。

この例を取っ​​てください。あなたはどれがより明確で、精神的に把握しにくいと思いますか?

foreach ($k as $i => $v) { 
    if ($i = 8) { continue; } 
    if ($i % 3) { continue; } 
    if ($v['foo'] == 'bar') { continue; } 
    if ($v['bar'] == 'foo') { continue; } 
    if ($v['foobar'] == 10) { continue; } 
    if ($v['value'] < 0 || $v['value'] > 100) { continue; } 

    // else, do code... 
} 

それとも...また

foreach ($k as $i => $v) { 
    if ($i != 8 && !($i & 3) && $v['foo'] != 'bar' && $v['bar'] != 'foo' && $v['foobar'] != 10 && $v['value'] >= 0 && $v['value'] <= 100) { 
     // do code ... 
    } 
} 

は、私がいない10が等しい場合はスキップよりも精神的なスリップのために、より傾向がある等しい場合この操作を行う(否定は理解が困難であることを見出しました10)。

多言語設定でコーディングする場合、同じ文化と言語がネイティブの否定を言語に持たないと考える必要があるかもしれないので、否定という概念はエイリアンです経験豊富なプログラマーでさえも、コードをすばやくブラウズするときに逃してしまうことがあります。しかしこれはあなたが考慮する必要があるかもしれません。

関連する問題