Naučte se identifikovat mrtvý kód a nedosažitelný kód v Javě. Může vám to být zadáno v úlohách na kódování při pohovoru v jazyce Java jako hádanka.

Chyby mrtvého kódu a nedosažitelného kódu

Abyste si udělali představu o mrtvém kódu, v této hádance jsem níže uvedl kus kódu. Pokuste se identifikovat problémy v kódu, pokud je zkompilován v prostředí Eclipse IDE.

Odpověď na výše uvedenou hádanku uvádím v další části, ale doporučuji vám, abyste si ji nejprve sami vyzkoušeli. Je to jen pro zábavu.

Řešení – Má mrtvý kód

Všichni jsme se jistě setkali s chybami kompilace souvisejícími s „Nedostupným kódem“ a někteří si možná všimli „varování o mrtvém kódu“. Výše uvedená hádanka se týká pouze jich.

V první metodě howToDoInJava_method1() je druhý tiskový příkaz nedosažitelný, takže kompilátor si bude stěžovat ze zapomenutých důvodů.

V druhé metodě howToDoInJava_method2() je druhý tiskový příkaz také nedosažitelný, ale kupodivu vás kompilátor pouze varuje. Později se zde pokusíme dobrat logiky.

V třetí metodě howToDoInJava_method3() je druhý tiskový příkaz také nedosažitelný, takže si kompilátor opět stěžuje.

Proč !!!

Co je to mrtvý kód

Nedosažitelný kód ve druhé metodě se nazývá „mrtvý kód“. Jedná se čistě o chybu hlášenou kompilátorem Eclipse, a pokud výše uvedenou třídu zkompilujete pomocí „javac“, bude si vestavěný kompilátor Javy stěžovat pouze na další dvě metody. .

Citace ze specifikace jazyka Java –

„Jde o to, že musí existovat nějaká možná cesta provádění od začátku konstruktoru, metody, inicializátoru instance nebo statického inicializátoru, který obsahuje příkaz, k příkazu samotnému. Analýza bere v úvahu strukturu příkazů.

S výjimkou zvláštního zacházení s příkazy while, do a for, jejichž podmíněný výraz má konstantní hodnotu true, se hodnoty ostatních výrazů při analýze toku nezohledňují.“

To znamená, že při určování nedosažitelného kódu se nebere v úvahu blok 'if'. Protože pokud projdete jednou z cest příkazu 'if', mohli byste se dostat k druhému příkazu print. Vše záleží na kompilátoru, který to určí během kompilace.

V ostatních dvou příkazech kompilátor určil nedosažitelnost, takže si stěžuje s chybou.

Pokud druhou metodu přepíšeme znovu takto.

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

Nyní kompilátor určí, že se v žádném případě nemůže dostat k poslednímu příkazu print, takže 'javac' opět hlásí nedosažitelný kód i pro tuto druhou metodu.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.