Naucz się identyfikować martwy kod i nieosiągalny kod w Javie. Może to być zadane w twoim wywiadzie Java problemy kodowania jako puzzle.

Błędy martwego kodu i nieosiągalnego kodu

Aby zrobić pojęcie martwego kodu, w tej układance, dałem kawałek kodu poniżej. Spróbuj zidentyfikować problemy w kodzie, jeśli jest on skompilowany w Eclipse IDE.

Podaję odpowiedź na powyższą zagadkę w następnej sekcji, ale zalecałbym, abyś spróbował najpierw sam. Its for fun only.

Solution – It has dead code

We all must have been faced compilation errors related to „Unreachable code” and some may have noticed „dead code warning”. Powyższa zagadka jest związana tylko z nimi.

W pierwszej metodzie howToDoInJava_method1(), druga instrukcja print jest nieosiągalna, więc kompilator będzie narzekał z niewiadomych powodów.

W drugiej metodzie howToDoInJava_method2(), druga instrukcja print jest również nieosiągalna, ale dziwnym trafem kompilator tylko ostrzega.

W trzeciej metodzie howToDoInJava_method3() również, druga instrukcja print jest nieosiągalna, więc kompilator znowu będzie narzekał.

Dlaczego !!!

Co to jest martwy kod

Nieosiągalny kod w metodzie 2 jest nazywany „Martwym kodem”. Jest to wyłącznie błąd zgłaszany przez kompilator Eclipse, a jeśli skompilujesz powyższą klasę za pomocą „javac”, wbudowany kompilator Javy będzie narzekał tylko na dwie pozostałe metody. .

Cytat ze specyfikacji języka Java –

„Chodzi o to, że musi istnieć jakaś możliwa ścieżka wykonania od początku konstruktora, metody, inicjalizatora instancji lub statycznego inicjalizatora, który zawiera oświadczenie do samego oświadczenia. Analiza bierze pod uwagę strukturę oświadczeń.

Z wyjątkiem specjalnego traktowania instrukcji while, do i for, których wyrażenie warunkowe ma stałą wartość true, wartości innych wyrażeń nie są brane pod uwagę w analizie przepływu”.

Co to oznacza, to że blok 'if' nie jest brany pod uwagę podczas określania kodu nieosiągalnego. Ponieważ jeśli przejdziesz przez jedną ze ścieżek instrukcji 'if', możesz dotrzeć do drugiej instrukcji print. Wszystko zależy od kompilatora, który określa to w czasie kompilacji.

W pozostałych dwóch instrukcjach kompilator określił nieosiągalność, więc zgłasza błąd.

Jeśli ponownie napiszemy drugą metodę w ten sposób.

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

Teraz kompilator określa, że w żaden sposób nie może dotrzeć do ostatniej instrukcji print, więc 'javac' ponownie zgłasza nieosiągalny kod również dla tej drugiej metody.

Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.