Bu mola kullanmak ve PHP devam etmek için iyi bir uygulama mı?

7 Cevap

Bu mola kullanmak ve PHP döngüler için gözcü olarak devam etmek iyi bir uygulamadır?

örneğin

if (!empty($var))
    break;

7 Cevap

do {
 if (condition1)
   break;
 some code;
 some code;
 if (condition2)
   break;
 some code;
 some code;
 if (condition3)
   break;
 some code;
 some code;
} while (false);

vs

if (!condition1) {
   some code; 
   some code;
   if (!condition2) {
      some code;
      some code;
      if (!condition3) {
         some code;
         some code;
      }
}

Bazı ilk sürümü abhomination ve zor okumak bulmak ve ikinci sürümü seviyorum. Bazı ilk sürümü temiz ve okunması kolay bulabilirsiniz. Şartların sayısının çarpma gibi ikinci bir yuvalama seviyesini takip etmek daha zor almak eğilimi olarak, ben, takip etmek ilk sürümü daha kolay bulmak eğilimindedir. Ayrıca eğer if (condition) break; if (condition) {some code; break} gibi sadece biraz daha karmaşık, do {if .. break; if .. break..;} while(false) desen equivalend iç içe IFS ile karşılaştırıldığında daha net alır bir şey içine alır.

Işık kullanımı o ok, fakat ağır kullanımında bu kod spagetti yapar. break ve continue temelde sadece kısıtlı bir goto ve bu, idareli kullanmak gibi.

Kesinlikle isimli, her ikisi de geçerli programlama yapıları demektir.

Ne değildir iyi bir fikir yeni tanıtılan GOTO . (Ben yaklaşık not görmedim bu bir Nisan şakası olduğunu söyle!)

Python, biz sonsuz döngü ve okunabilirliği artırmak için bölünürler. Yani evet, sen doğru yapmak koşuluyla, kullanmak, ve iyi bir nedenle olabilir.

Bana birkaç soru ile cevap vereyim:

  • Neden iyi bir uygulama olarak kabul edilmemelkimlikir?

  • Bu kod okunabilirliği azaltır mı?

  • Bu döngüleri için yavaşlatmak mu?

Bir mola tartışma ve PHP devam (ve genel olarak döngü) için de Advanced loops bir göz var - yazar hemen mola yutmak ve devam etmek yönetmek ancak n kırmak ve n devam edemez izlenimini almak . :-)

5 + yıl PHP programlama ben switch ifadeleri dışında mola kullanmak zorunda kaldı.

Devam bazen tekrarlamalar ilk veya son öğeleri atlamak için kullanılır, ama ben çok sevmiyorum.

Neden GOTO reintroduce mi? bu bir utanç

De, soruyu cevaplamak için

if (!empty($var))
    break;

Dönüş kullanmayın (Neden bir yöntem bağlamında ise)

if (!empty($var))
    return false;

Ben bu şekilde çok net düşünmek ve içinde oldu ne arayan farkında yapar. Argüman hatalarının için daha iyi bir kullanım facte noktaya bir yürütme onlar yükseltilmiş kıracak Excecptions, kullanıyor.