PHP Kodlama stilleri dönmek;

4 Cevap php

hayır "ara vermek" gibi bulunduğunda bizim takım için yeni bir kodlama stili kuralları uygulamak için çalışıyoruz, php codesniffer anahtarı durum açıklamaları ile ilgili bir uyarı yazdırıyor:

switch ($foo) {   
    case 1:
      return 1;   
    case 2:
      return 2;   
   default:
       return 3; 
}

kullanmak için herhangi bir iyi bir nedeni var:

   switch ($foo) {
       case 1:
         return 1;
         break;
   }

? mola ulaştı asla?

4 Cevap

O dışarı çıkmak için mükemmel geçerli bulunuyor break zaman return bir switch den.

Ama her case bir defensive programming uygulama olarak açık break s eklemek için oldukça yaygın bir uygulamadır.

switch ($foo) {
    case 1:
        return 1;
        break;

    case 2:
        return 2;
        break;
}

Fikir, daha sonra case 1 kodunuzu değiştirebilir ve iade deyimi kaldırmak, bir break eklemeyi unutabilir gerektiğidir.

Bu yanlışlıkla program akış case 2 kadar düşmesine neden olur.

switch ($foo) {
    case 1:
        somethingDifferent();

    case 2:
        return 2;
        break;
}

Durum açıklamaları ile düşen biraz sıradışı olan ve bunun kasıtlı olduğunu göstermek için bunu zaman kodunuz için bir yorum eklemek gerekir.

switch ($foo) {
    case 1:
        somethingDifferentAndWeWantToDoCase2AsWell();
        // fallthrough

    case 2:
        return 2;
        break;
}

Potansiyel clutters kodu ve daha az okunabilir yapmak - - birçok savunma programlama uygulamaları gibi kod kabartmak olmadığını dengelemek lazım buna değer ya da değildir.

Ben mükemmel kodlama konusunda uzman değilim ama doğrulayıcı böyle bir şey tercih edeceğini düşünüyorum

switch ($foo) {   
    case 1:
      $ret =  1;   
      break;
    case 2:
      $ret = 2;
      break;   
   default:
       $ret = 3

}
return $ret

Ben kod akışını kırmak açıklamada durumda dönüşünü kullanarak gerçekten iyi uygulama olmadığını düşünüyorum. Validator hiçbir sonu demek Demek bu yüzden ...

Kategorideki yaklaşık sorunuz için, ben bilmiyorum ... üzgünüm

i her durumda herhangi bir ara koymak vermezsek, program her zaman son davayı veya varsayılan seçecek tek sorun, ben düşünüyorum düşünüyorum.

PHP manuel (http://us3.php.net/manual/en/control-structures.switch.php):

PHP switch bloğunun sonuna ya da break ifadesini gördüğü ilk zamana kadar ifadeleri çalıştırmaya devam eder. Bir case ifadesi listenin sonunda break koymazsanız, PHP şu durumda ifadeleri çalıştırmaya devam edecek. Örneğin:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}
?>

$ I 0'a eşit ise burada, PHP echo deyimlerini çalıştıracaktır! $ I 1'e eşit ise, PHP son iki echo deyimini çalıştıracaktır. $ I 2'ye eşittir, yalnızca eğer (görüntülenir olacağını 'i 2 eşittir') beklenen davranış olacaktı. Böylece, kırılma ifadeleri (unutmamak önemlidir, belirli koşullar altında bilerek onları besleyen kaçınmak isteyebilirsiniz bile .)