Leer om dode code en onbereikbare code in Java te identificeren. Het kan worden gevraagd in uw Java-interview codering problemen als een puzzel.

Dode code en onbereikbare code fouten

Om het concept van dode code te maken, in deze puzzel, heb ik een stuk code hieronder gegeven. Probeer de problemen in de code te identificeren, als deze is gecompileerd in eclipse IDE.

Ik geef het antwoord op bovenstaande puzzel in de volgende sectie, maar ik zou je aanraden om het eerst zelf te proberen. Het is alleen voor de lol.

Oplossing – Het heeft dode code

We moeten allemaal zijn geconfronteerd compilatiefouten in verband met “Unreachable code” en sommigen kunnen hebben opgemerkt “dode code waarschuwing”. Bovenstaande puzzel heeft alleen met hen te maken.

In eerste methode howToDoInJava_method1(), tweede print statement is onbereikbaar, dus compiler zal klagen om onduidelijke redenen.

In tweede methode howToDoInJava_method2(), tweede print statement is ook onbereikbaar, maar vreemd compiler alleen waarschuwt. We zullen later proberen om de logica hier te krijgen.

In derde methode howToDoInJava_method3() ook, tweede print statement is onbereikbaar, dus compiler zal weer klagen.

Waarom!!

Wat is dode code

De onbereikbare code in methode 2 wordt “Dode code” genoemd. Dit is puur Eclipse compiler gerapporteerde fout, en als je bovenstaande class compileert met “javac”, zal de ingebouwde Java compiler alleen klagen voor de andere twee methodes.

Quote uit de Java language specification –

“Het idee is dat er een mogelijk executie pad moet zijn vanaf het begin van de constructor, method, instance initializer of static initializer die het statement bevat tot aan het statement zelf. De analyse houdt rekening met de structuur van verklaringen.

Behoudens de speciale behandeling van while, do, en for statements waarvan de voorwaardelijke expressie de constante waarde true heeft, worden de waarden van andere expressies niet in aanmerking genomen bij de flow-analyse”.

Wat dat betekent, is dat 'if' block niet in aanmerking wordt genomen bij het bepalen van onbereikbare code. Want als je door een van de paden van het 'if' statement gaat, zou je het tweede print statement kunnen bereiken. Alles hangt af van de compiler, die dit tijdens het compileren bepaalt.

In de andere twee verklaringen heeft de compiler de onbereikbaarheid bepaald, zodat hij met een fout klaagt.

Als we de tweede methode nu nog eens zo herschrijven.

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

Nu bepaalt de compiler dat hij op geen enkele manier het laatste print statement kan bereiken, dus 'javac' meldt ook voor deze tweede methode weer onbereikbare code.

Articles

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.