JavaRush /Java Blog /Random-TL /Mga kondisyon ng Yoda
MAX
Antas
Киров

Mga kondisyon ng Yoda

Nai-publish sa grupo
Ang isang maikling post ay nakatuon sa lahat ng mga tagahanga ng Star Wars at Java / JavaRush bilang parangal sa ika-40 anibersaryo ng paglabas ng Episode V ng star saga! Mga kondisyon ng Yoda - 1Minsan makakahanap ka ng maraming kawili-wiling bagay sa Internet, at noong isang araw ay nakatagpo ako ng medyo nakakatawa sa unang tingin na kasanayan sa programming na tinatawag na Yoda conditions . Sa madaling sabi, ang mga kundisyon ng Yoda (din ang notasyon ng Yoda) ay isang istilo ng programming kung saan ang dalawang bahagi ng pamilyar na expression ng paghahambing sa mga conditional na pahayag ay binabaligtad:
if (5 == a) {
    // do something
}
Maaaring gamitin ang istilong ito sa mga wikang may tulad-C na syntax, kadalasan sa mga expression na may ifat while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
Bakit ilipat ang pare-parehong expression sa kaliwang bahagi ng operator ng paghahambing? Ipagpalagay natin ang isang hypothetical na sitwasyon kung saan, pagkatapos ng marathon viewing ng lahat ng siyam na anim na bahagi ng Saga, kami, nang walang tulog, ay naupo upang magsulat ng ilang code para sa aming pet project at isinulat ang sumusunod:
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
Sa kasong ito, sa bawat oras na patakbuhin mo ang programa, matatanggap mo ang string Number is 13", anuman ang argumento na ipinasa аsa pamamaraan checkNumber(int a). Hindi ito ang inaasahan namin! Ang mga lohikal na error ay maaaring mangyari nang madalas sa mga baguhang programmer (maniwala ka sa akin, ALAM KO). Ngunit sa yugto ng pagsasama-sama, ang code tulad ng 13 = a ay magbubunga ng isang error, na tiyak na hindi natin mapapansin, dahil ang halaga ng integer ay pare-pareho at, nang naaayon, ay hindi maaaring magbago (maging "a"). Mga kondisyon ng Yoda - 1

Mayroong parehong mga kalamangan at kahinaan sa paggamit ng mga kundisyon ni Yoda.

Banayad na Gilid:

  1. Pag-iwas sa pagtatalaga sa isang variable kapag ang aming layunin ay paghahambing.

  2. Paglutas sa problema ng hindi ligtas na "Null Behavior" ( NullPointerException) // mga halimbawa mula sa Wikipedia

  3. Nang walang Yoda:

    String myString = null;
    if (myString.equals("foobar")) { /* ... */ }
    // This causes a NullPointerException in Java

    Kasama si Yoda:

    String myString = null;
    if ( "foobar".equals(myString) ) { // Результат - Ложь
       /* не выполняется */
    }

Madilim na Gilid:

  1. Ang pagiging madaling mabasa ng code para sa mga taong titingin sa iyong code ay nagiging mas kumplikado, na nagdaragdag ng pagkarga sa perception ng code.
  2. Makitid na saklaw, tanging paghahambing para sa pagkakapantay-pantay o paghahambing sa isang pare-pareho ang ginagamit, pagsuri para sa null.
  3. Maraming mga compiler ang "nakakakita" ng mga error sa ganitong uri at nagbabala nang maaga tungkol sa pagkakaroon ng isang potensyal na error.
Ang isang alternatibo sa Yoda notation ay maaaring mga unit test. Sa mga araw ng Lumang Republika, sinabi na ang pagsasagawa ng mahusay na pagsubok ay matiyak na ang code ay magiging walang error at gagawin lamang kung ano ang nakasulat na dapat gawin. Anong mga kapaki-pakinabang na kasanayan ang alam mo? Ibahagi ang iyong kaalaman sa mga komento! At isulat din ang iyong paboritong episode! At nawa ang Force ay sumaiyo!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION