Lär dig att identifiera död kod och oåtkomlig kod i Java. Det kan ställas som ett pussel i kodningsproblem i din Java-intervju.

Död kod och fel i oåtkomlig kod

För att göra begreppet död kod, i det här pusslet, har jag gett ett stycke kod nedan. Försök att identifiera problemen i koden, om den kompileras i Eclipse IDE.

Jag ger svaret på ovanstående pussel i nästa avsnitt, men jag rekommenderar att du försöker först själv. Det är bara på skoj.

Lösning – Den har död kod

Vi måste alla ha stött på kompileringsfel i samband med ”Unreachable code” (otillgänglig kod) och en del kanske har lagt märke till ”dead code warning” (varning för död kod). Ovanstående pussel är endast relaterat till dem.

I den första metoden howToDoInJava_method1() är den andra utskriftsanvisningen otillgänglig, så kompilatorn kommer att klaga av oklara skäl.

I den andra metoden howToDoInJava_method2() är den andra utskriftsanvisningen också otillgänglig, men konstigt nog varnar kompilatorn dig bara. Vi kommer senare att försöka få fram logiken här.

I den tredje metoden howToDoInJava_method3() är också andra utskriftsanvisningen otillgänglig, så kompilatorn klagar igen.

Varför !!

Vad är död kod

Den oåtkomliga koden i metod 2 kallas ”död kod”. Detta är ett fel som Eclipse-kompilatorn rapporterar, och om du kompilerar ovanstående klass med ”javac” kommer den inbyggda Java-kompilatorn endast att klaga på de andra två metoderna. .

Citat från Javas språkspecifikation –

”Tanken är att det måste finnas någon möjlig exekveringsväg från början av den konstruktör, metod, instansinitialiserare eller statisk initialiserare som innehåller uttalandet till själva uttalandet. Analysen tar hänsyn till strukturen hos uttalanden.

Med undantag för specialbehandlingen av while, do och for-utsagor vars villkorsexpression har det konstanta värdet true, beaktas inte värdena för andra uttryck i flödesanalysen.”

Vad det betyder, är att 'if'-blocket inte beaktas när man bestämmer oåtkomlig kod. Eftersom om du går genom en av vägarna för 'if'-anvisningen kan du nå den andra print-anvisningen. Allt beror på kompilatorn som bestämmer detta under kompileringstiden.

I de andra två påståendena har kompilatorn bestämt att det inte går att nå, så den klagar med ett fel.

Om vi skriver om den andra metoden igen så här.

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

Nu bestämmer kompilatorn att det inte går att nå det sista utskriftsinstruktionen på något sätt, så 'javac' rapporterar återigen oåtkomlig kod även för den här andra metoden.

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras.