Aprenda a identificar código morto e código inacessível em Java. Pode ser perguntado em sua entrevista Java problemas de codificação como um quebra-cabeça.

Dead code and unreachable code errors

Para fazer conceito de código morto, neste quebra-cabeça, eu dei um pedaço de código abaixo. Tente identificar os problemas no código, se ele for compilado no eclipse IDE.

Estou dando a resposta do enigma acima na próxima seção, mas eu recomendaria que você tentasse primeiro. É apenas por diversão.

Solução – Tem código morto

Todos nós devemos ter enfrentado erros de compilação relacionados com “código inalcançável” e alguns podem ter notado “aviso de código morto”. Above puzzle is related to them only.

In first method howToDoInJava_method1(), second print statement is unreachable, so compiler will complain for oblivious reasons.

In second method howToDoInJava_method2(), second print statement is also unreachable, but strange compiler only warns you. Mais tarde vamos tentar obter a lógica aqui.

No terceiro método howToDoInJava_method3() também, a segunda declaração de impressão não é acessível, então o compilador irá reclamar novamente.

Porquê !!

O que é código morto

O código inacessível no método 2 é chamado de “Código morto”. Este é puramente um erro reportado pelo compilador Eclipse, e se você compilar acima da classe com “javac”, o compilador inbuilt Java só irá reclamar para outros dois métodos. .

Quote da especificação da linguagem Java –

“A idéia é que deve haver algum caminho de execução possível desde o início do construtor, método, inicializador de instância ou inicializador estático que contenha a instrução para a própria instrução. A análise leva em conta a estrutura das instruções.

Exceto pelo tratamento especial de while, do, e for comandos cuja expressão de condição tem o valor constante verdadeiro, os valores de outras expressões não são levados em conta na análise de fluxo”.

O que isso significa, é que 'if' bloco não é levado em conta ao determinar código inalcançável. Como se você passar por um dos caminhos da instrução 'if', você pode chegar à segunda instrução de impressão. Tudo depende do compilador que determina isso durante o tempo de compilação.

Em outras duas instruções, o compilador determinou a inatingibilidade, então ele reclama com erro.

Se reescrevermos o segundo método novamente assim.

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

Agora, o compilador determina que de nenhuma maneira ele pode chegar à última instrução de impressão, então 'javac' novamente relata código inatingível para este segundo método também.

Articles

Deixe uma resposta

O seu endereço de email não será publicado.