Opi tunnistamaan kuollut koodi ja tavoittamaton koodi Javassa. Sitä saatetaan kysyä Java-haastattelun koodausongelmissa arvoituksena.

Kuollut koodi ja tavoittamattoman koodin virheet

Käsite kuolleen koodin käsitteen tekemiseen, tässä arvoituksessa olen antanut alla olevan koodinpätkän. Yritä tunnistaa ongelmat koodissa, jos se on käännetty eclipse IDE:ssä.

Annan vastauksen yllä olevaan pulmaan seuraavassa osiossa, mutta suosittelen sinua kokeilemaan ensin itse. Sen vain huvin vuoksi.

Ratkaisu – Siinä on kuollutta koodia

Me kaikki olemme varmasti kohdanneet kääntämisvirheitä, jotka liittyvät ”Tavoittamattomaan koodiin”, ja jotkut ovat ehkä huomanneet ”kuolleen koodin varoituksen”. Yllä oleva pulma liittyy vain niihin.

Ensimmäisessä metodissa howToDoInJava_method1() toinen tulostuslause on tavoittamaton, joten kääntäjä valittaa unohdetuista syistä.

Toisessa metodissa howToDoInJava_method2() toinen tulostuslause on myös tavoittamaton, mutta kumma kääntäjä vain varoittaa. Yritämme myöhemmin selvittää logiikan tässä.

Kolmannessa metodissa howToDoInJava_method3() myös toinen tulostuslause on saavuttamaton, joten kääntäjä valittaa taas.

Miksi !!

Mikä on kuollutta koodia

Menetelmän 2 saavuttamatonta koodia kutsutaan ”kuolleeksi koodiksi”. Tämä on puhtaasti Eclipse-kääntäjän raportoima virhe, ja jos käännät yllä olevan luokan ”javac” -ohjelmalla, Javan sisäänrakennettu kääntäjä valittaa vain kahdesta muusta metodista. .

Lainaus Javan kielen spesifikaatiosta –

”Ajatuksena on, että on oltava jokin mahdollinen suoritusreitti lausekkeen sisältävän konstruktorin, metodin, instanssin alustajan tai staattisen alustajan alusta itse lausekkeeseen. Analyysissä otetaan huomioon lausekkeiden rakenne.

Poislukien while, do ja for lausekkeiden, joiden ehtolausekkeella on vakioarvo true, erityiskohtelu, muiden lausekkeiden arvoja ei oteta huomioon virtausanalyysissä.”

Tämä tarkoittaa, että 'if'-lohkoa while ei oteta huomioon määrittäessä saavuttamatonta koodia. Koska jos menet jonkin 'if'-lausekkeen polun läpi, voit päästä toiseen print-lausekkeeseen. Kaikki riippuu kääntäjästä, joka määrittää tämän kääntämisen aikana.

Kahdessa muussa lausekkeessa kääntäjä on määrittänyt tavoittamattomuuden, joten se valittaa virheestä.

Jos kirjoitamme toisen metodin uudelleen näin.

public void howToDoInJava_method2() {System.out.println("how to do");if (true) {return;}else{return;}System.out.println("in java");}

Nyt kääntäjä määrittelee, että viimeiseen tulostuslausekkeeseen ei pääse millään tavalla, joten 'javac' raportoi tavoittamattoman koodin tässäkin metodissa.

Articles

Vastaa

Sähköpostiosoitettasi ei julkaista.