Assertivas

4 respostas
anderson.bonavides
public class teste {
	int z = 5;
	public void Certkiller1(int x){
		assert(x >0);
		switch(x){
		case 2: x = 3;
		default: assert false;
		}
	}
	private void Certkiller2(int y){
		assert(y<0);
		
	}
	private void Certikiller3(){
		assert (Certkiller4());
		
	}
	private Boolean Certkiller4(){
		z = 6;
		return false;
	}
	
}

Olhando para este código fiquei com uma pulga atraz da orelha. Todas as declarações de assert são validas. Mas o que é e não é boa pratica na utilização de assertivas, ou seja, o que são e o que não são usados adequadamente?

Desde já agradeço a todos que postarem.

;)

4 Respostas

F

cara, assert foi criado para encontrar possiveis falhas no código ou se algo que não era previsivel .Por essa razão assert é usado em metodos com modificador private pois esse metodo tem uma visibilidade bem restrita,de tal sorte qd o valor boolean for false logo um assertion error vai ser lancado e vc podera saber onde isso ocorreu.Pode ser verificado em tempo de compilação ou execução,mas isso vc deve saber.
vc poderia subistituir assert com vários if(boolean) throw new AssertionError() ,assert foi criado como ferramenta para sobstituir linhas de códigos desnecessarias isso fácilita bastante a leitura do mesmo.
Tambem não é aconselhavel usar um assert justamente dentro de um default pq provavelmente uma verificação nem sempre ocorrera,e isto não é o que vc vai querer.Espero ter te ajudado
relembrando em tempo de compilacao
javac -1.4 source noveclasse

em tempo de execucao
java -ea

anderson.bonavides

É sim Fabio vc foi em cheio. A resposta dava que o uso do assert no default era correto. Então fiquei com meus botoes é correto mas não é adequado. Então é prestar atenção. É como a K&B fala pq não é aconselhavel não quer dizer que é errado.

:wink:

LPJava

anderson.bonavides:
É sim Fabio vc foi em cheio. A resposta dava que o uso do assert no default era correto. Então fiquei com meus botoes é correto mas não é adequado. Então é prestar atenção. É como a K&B fala pq não é aconselhavel não quer dizer que é errado.

;)

no final do topico sobre assertivas no livro da kathy ela bota todas as recomendações onde nao deve ser usada, todas elas caem no exame… e eles sempre testam se vc está ciente que assertivas é uma boa pratica de programação e nao usar para teste como if por exemplo… ou dados que venha do usuario… o exame sempre testa isso de 5 questoes de assert q apareceu na minha 1 apenas estava dentro das recomendações do uso…

flw!

J

Não use expressões assertivas que causem efeitos colaterais. A execução das assertivas não é sempre garantida, portanto, não será bom ter um comportamento que se altere dependendo das assertivas estarem ativadas.

private void Certikiller3(){   
        assert (Certkiller4());   
           
    }   
    private Boolean Certkiller4(){   
        z = 6;   
        return false;   
    }
Repare que o método Certikiller4() que altera o valor de z só poderá ser executado caso as assertivas estejam ativadas, pois o método é chamado dentro do método Certkiller3() que possui uma instrução assert que só entrará em ação caso as assertivas estejam ativadas. Portanto o valor de z é dependente das assertivas estarem ou não ativadas.
Criado 28 de janeiro de 2008
Ultima resposta 29 de jan. de 2008
Respostas 4
Participantes 4