Lær at identificere død kode og uopnåelig kode i Java. Det kan blive spurgt i din Java interview kodningsproblemer som et puslespil.

Død kode og utilgængelig kode fejl

For at gøre begreb af død kode, i denne puslespil, har jeg givet et stykke kode nedenfor. Prøv at identificere problemerne i koden, hvis den er kompileret i eclipse IDE.

Jeg giver svaret på ovenstående puslespil i næste afsnit, men jeg vil anbefale dig at prøve først selv. Det er kun for sjov.

Løsning – Den har død kode

Vi må alle have stået over for kompileringsfejl i forbindelse med “Unreachable code”, og nogle har måske bemærket “dead code warning”. Ovenstående gåde er kun relateret til dem.

I første metode howToDoInJava_method1() er anden udskriftsanvisning uopnåelig, så compileren klager af uvisse årsager.

I anden metode howToDoInJava_method2() er anden udskriftsanvisning også uopnåelig, men underligt nok advarer compileren dig kun. Vi vil senere forsøge at få logikken her.

I tredje metode howToDoInJava_method3() er anden print statement også uopnåelig, så compiler klager igen.

Hvorfor !!!

Hvad er død kode

Den uopnåelige kode i metode 2 kaldes “død kode”. Dette er udelukkende en fejl, som Eclipse-compileren har rapporteret, og hvis du kompilerer ovenstående klasse med “javac”, vil den indbyggede Java-compiler kun klage for de to andre metoder. .

Citat fra Javas sprogspecifikation –

“Ideen er, at der skal være en mulig udførelsesvej fra begyndelsen af den konstruktor, metode, instansinitialisator eller statisk initialisator, der indeholder udsagnet, til selve udsagnet. Analysen tager hensyn til strukturen af udsagn.

Med undtagelse af den særlige behandling af while, do og for-udsagn, hvis betingelsesudtryk har den konstante værdi true, tages der ikke hensyn til værdierne af andre udtryk i flowanalysen.”

Det betyder, at der ikke tages hensyn til 'if'-blokken, når der bestemmes uopnåelig kode. Da man, hvis man går gennem en af stierne i 'if'-anvisningen, kan nå den anden print-anvisning. Det hele afhænger af compileren, som bestemmer dette under kompileringen.

I de to andre sætninger har compileren bestemt uopnåeligheden, så den klager med en fejl.

Hvis vi omskriver anden metode igen på denne måde.

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

Nu bestemmer compileren, at den på ingen måde kan nå til sidste udskriftsanvisning, så 'javac' rapporterer igen uopnåelig kode for denne anden metode også.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.