SingleLine parantez kötü uygulama olmadan ifadeler ya da eğer varsa ifadelerdir?

12 Cevap php
if (condition) { /* do something */ }
else { /* do something */ }

if (condition)
    /* do something */
else
    /* do something */

Ben ilk örneği iyi bir fikir olmadığını söylendi. Ben bu (ya da ikinci biri için ya) gerçekten bu durumda olup olmadığını hiçbir fikrim yok; Bu tip miktarını kısaltmak değil mi? Ya da sadece bir karışıklık yapar çünkü?

12 Cevap

Iyi uygulama diğerleri okuyabilir ve kolayca güncelleyebilirsiniz kod yazmaktır.

Çoğu PHP geliştiricileri için kullanılan formları takip etmez, çünkü birinci form sorgulanabilir:

if (condition) {
  // code
} else {
  // code
}

// ... or ...

if (condition)
{
  // code
}
else
{
  // code
}

// ... or ...

if (condition) { /* short code */ } else { /* short code */ }

// ... or ...

condition ? /* short code */ : /* short code */;

Bu standart uygulama hakkında tamamen ve mutlaka anlamda-sadece diğer geliştiricilerin görmeye alışık ne hakkında yapmaz unutmayın.

Bu hata yapmak başka bir programcı için kolay hale getirir, çünkü ikinci bir form, daha da önemlisi, çok iyi değil:

if (condition)
  // code A
else
  // code B
  // code C (added by another programmer)

Bu örnekte, diğer programcı code C ekledim, ancak bütün ayraçları else blok tamamlamayı unutmuşum. Bu sorunlara neden olur. Siz sadece if ve parantez içinde else blokları sararak bu karşı savunmak.

Tutarlılık için eğer benim tercihi ... yani:

if(...)
{
   statement 1;
   statement 2;
}
else
{
   statement 1;
   statement 2;
}

: farklı daha

if(...)
{
   statement 1;
}
else
{
   statement 1;
}

Tutarlı olduğunu ve bunları daha sonra eklemek için unutmak sorunları önler, çünkü Ben hep bunları kullanmak.

Ancak diğer insanlar benim koduna bakmak ve {ve} koymak için aptal olduğunu düşünüyorum. Onlar nedenleri var, ben ... Ben Psikofarmakolojik :-) gibi daha benim nedenleri fazla sevmeye mayın ne var

Genellikle non-okunabilir kod kötü bir uygulamadır. Tek hattı yazarak daha verimli ve hat numaralarını kaydeder, ancak bugünden itibaren bir yıl geri gelmek veya hatalar için tarama ve yaparken onu daha zor yapacağız.

Bence, evet tek bir satır bile ifadeleri olması kötü bir uygulamadır.

Bilgisayar gerçekten (bildiğim kadarıyla söyleyebilirim) umursamıyor ama nerede yaşadığını bilen bir seri katil tarafından yapılmaktadır gidiyor gibi her zaman kod yazmak gerekir.

Okunabilir! Kendi kendilerine kolaylıkla ayırt.

Gördüğüm sorun koşullardan biri kod eklerken {}-az-eğer tanımama geliştiriciler. Örnek:

//before
if(something)
    statement;

//after
if(something)
    statement;
    addedstatement;

Açıkçası, bu bekledikleri yapmayacağım.

Kısa tablolar tüm ama, buna göre parantez ve uzay onları kullanın. Birkaç nedenden dolayı bunu yapmak istiyorum:

  • Bu bir şey nereye gidiyor hakkında bir hata yapmak zor.

  • Bu okumak daha kolay.

  • Birden ifadeleri içeren bir makro bir Çaprazsız çerçeveler if-else içinde genişletilmiş olduğunda makro genişleme olanakları (örneğin, C, C + +) ile dilde, parantez dahil başarısızlık kafa karıştırıcı mantık hataları neden olur.

Bu her şeyden daha fazla kodlama tarzıdır. O dedi, benim kişisel görüşüm ikinci örnek, potansiyel olarak oldukça zararlı olmasıdır. Bu yanlışlıkla parantez blokları oluşturmak için tek yoldur dilde "bloğu ikinci bir satır eklemek" için yeterince kolay. Alternatif bir sözdizimi var Ama nerede PHP, bu daha az gerekli uyarı zillerinin çalması muhtemeldir:

if ($_GET["asdf"]==1):
    /* do something */
else:
    /* do something */
endif;

Temel kural: Eğer koymak için gidiyoruz eğer ayrı bir satırda "bir şeyler yapmak", parantez kullanmak; Eğer parantez kullanmak için gidiyoruz değil, aynı hat üzerine koydu!

Ben parantezi her zaman kullanmayı tercih ettiğini, saçma konular ile pek çok üçüncü parti kod gördük. Ben iyi olmamıştı dedi

if(){}
else (){}

Eğer kullanmak () {} kısa bir talimat olduğunu ve tek başına aynı hat üzerinde. Else varsa uzun kullanın:

if(checkSomething)
{
   //dosomething
}
else
{
   //doanotherthing
}

Bu aslında bir süre önce bir iş sınavından hatırlıyorum bir şeydir. Kod aşağıdaki benzer oldu:

if (x == 0)
    x = 2;
else
    print("x is: %d", x); // debugging!
    x = 4;

Buradaki çoğu insan hata nokta olabilir, ama sen gerçekten takıldı "kötü kod" gibi istediğiniz bir şey yerini alabilir. Eğer dışarı yorumladı şey "eski sürüm", ve birileri un-yorumlarınızı onu, ve aniden ikinci deyim bloğunun dışında olduğunda daha ince bir hata geliyor.

Temel olarak, hızlı bir kavram öğrenmek için küçük bir test uygulaması olmadığı sürece, ben always braket (ve hatta test apps I usually dirsek). Ben yapmazsam sadece bile 5-line yöntemleri, daha sonra baş ağrısı değmez.

Hiç C veya C + + böyle bir kod gördünüz mü?

    /*  Warning:  bogus C code!  */

if (some condition)
        if (another condition)
                do_something(fancy);
else
        this_sucks(badluck);

Girinti yanlış, ya da parantez kullanmak sürece bir "else" her zaman yakın "if" için de geçerlidir, çünkü program adamcağız ya.

(Let's just use python. No brackets, just pure clean whitespaces. :P)

Birden fazla satır kullanmanın başlıca yararı ayıklama kolaylığı. Eğer bir satırda bir if else deyimi hepsi var ve hata havaya uçurdu sana o satır x söylerse, bu ifadenin bölümünün başarısız olduğunu belirlemek daha zordur. Birden fazla satır da daha kolay bir hata ayıklayıcı kullanarak kod boyunca adım yapar.

Sen "eğer" ve koymak gerekir interaktif debuggers için kod dostça yapmak için ayrı satırlarda "bir şeyler yapmak".

Eğer koyarsanız hem ve aynı hat üzerinde "bir şeyler yapmak", o zaman sadece "bir şeyler yapmak" satırında bir kesme noktası ayarlamak olamaz "eğer".

Bu iki satır uzunluğunda, yani bir tek satır yok gerçekten.

if bu kodu easier okuma yaptığında s tek bir satır ile yanlış bir şey yok.

Bunun gibi, örneğin, bir şey:

if (last_item) print ", and " else print ", "

daha iyidir

if (last_iem)
{
    print ", and "
}
else
{
    print ", "
}