Tanulja meg azonosítani a halott kódot és az elérhetetlen kódot Java-ban. Ezt kérdezhetik a Java interjú kódolási feladataiban rejtvényként.

Halt kód és elérhetetlen kód hibák

A halott kód fogalmának megértéséhez ebben a rejtvényben az alábbiakban egy kóddarabot adtam meg. Próbálja meg azonosítani a kódban lévő problémákat, ha az eclipse IDE-ben van lefordítva.

A következő részben megadom a fenti rejtvény válaszát, de azt javaslom, hogy először próbálja ki saját maga. It for fun only.

Solution – It has dead code

We must have all have been faced compilation errors related to “Unreachable code” and some may have noticed “dead code warning”. A fenti rejtvény csak ezekkel kapcsolatos.

Az első módszerben howToDoInJava_method1() a második nyomtatási utasítás elérhetetlen, ezért a fordító önfeledt okokból panaszkodik.

A második módszerben howToDoInJava_method2() a második nyomtatási utasítás szintén elérhetetlen, de furcsa módon a fordító csak figyelmeztet. Később itt is megpróbáljuk majd kideríteni a logikát.

A harmadik metódusban howToDoInJava_method3() szintén elérhetetlen a második print utasítás, így a fordító ismét panaszkodik.

Miért !!!

Mi az a halott kód

A 2. módszerben lévő elérhetetlen kódot “halott kódnak” nevezzük. Ez pusztán az Eclipse fordító által jelentett hiba, és ha a fenti osztályt a “javac” programmal fordítja le, a Java beépített fordító csak a másik két metódusra fog panaszkodni. .

idézet a Java nyelvi specifikációból –

“Az ötlet az, hogy az utasítást tartalmazó konstruktor, metódus, példány inicializáló vagy statikus inicializáló elejétől magáig az utasításig kell lennie valamilyen lehetséges végrehajtási útvonalnak. Az elemzés figyelembe veszi az utasítások szerkezetét.

Az while, do és for utasítások speciális kezelését leszámítva, amelyek feltétel-kifejezése true konstans értékű, a többi kifejezés értékét nem vesszük figyelembe az áramláselemzés során.”

Azt jelenti, hogy a 'if' blokkot nem vesszük figyelembe az elérhetetlen kód meghatározása során. Mivel ha a 'if' utasítás egyik útvonalán keresztül megyünk, akkor elérhetjük a második print utasítást. Minden a fordítótól függ, amely ezt a fordítási idő alatt határozza meg.

A másik két utasításban a fordító megállapította az elérhetetlenséget, ezért hibával panaszkodik.

Ha a második metódust újra átírjuk így.

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

Most a fordító megállapítja, hogy semmiképpen sem lehet elérni az utolsó nyomtatási utasítást, ezért a 'javac' ismét elérhetetlen kódot jelent erre a második metódusra is.

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.