Mudanças entre as edições de "Uso apropriado de asserções"

De Basef
Ir para: navegação, pesquisa
(Criou página com 'Ao usar asserções no código Java, os seguintes cuidados devem ser tomados: 1) '''Não validar argumentos de um método publico''' - o código público será chamado de um...')
 
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 4: Linha 4:
 
<source lang="java">
 
<source lang="java">
 
public void show(int n) {
 
public void show(int n) {
     assert(n > 10); // OK
+
     assert(n > 10); // Errado
 
     ...
 
     ...
 
}
 
}
Linha 12: Linha 12:
 
<source lang="java">
 
<source lang="java">
 
private void show(int n) {
 
private void show(int n) {
     assert(n > 10); // Errado
+
     assert(n > 10); // OK
 
     ...
 
     ...
 
}
 
}
Linha 28: Linha 28:
 
<source lang="java">
 
<source lang="java">
 
public void divide(float divisor, float dividend) {
 
public void divide(float divisor, float dividend) {
     assert(dividend > 0); OK
+
     assert(dividend > 0); // OK
 
     ...
 
     ...
 
}
 
}
 
</source>
 
</source>
  
5) '''Não usar asserções que alteram o estado do programa''' - Se as asserções estiverem desativadas o trecho de código não será executado.
+
5) '''Não usar asserções que alteram o estado do programa''' - O programa não pode se comportar de forma diferente se as asserções estiverem ou não ativadas
 
<source lang="java">
 
<source lang="java">
 
class Foo {
 
class Foo {
Linha 39: Linha 39:
  
 
     public void doSomething() {
 
     public void doSomething() {
         assert(doMore()); OK
+
         assert(doMore()); // Errado
 
         ...
 
         ...
 
     }
 
     }
Linha 48: Linha 48:
 
}
 
}
 
</source>
 
</source>
 +
No código acima, o método doMore() não é executado se as asserções estiverem desativadas.
  
 
[[Category:Java]]
 
[[Category:Java]]

Edição atual tal como às 22h10min de 5 de maio de 2015

Ao usar asserções no código Java, os seguintes cuidados devem ser tomados:

1) Não validar argumentos de um método publico - o código público será chamado de um código em que não se tem controle. Neste caso, as exceptions provavelmente serão uma melhor opção.

public void show(int n) {
    assert(n > 10); // Errado
    ...
}

2) Usar asserções para validar argumentos de método privado - o código privado é controlado, portanto, pode-se validar os argumentos

private void show(int n) {
    assert(n > 10); // OK
    ...
}

3) Não validar argumentos da linha de comando - Se encaixa na regra 1

public static void main(String[] args) {
    assert(args[0] > 10); // Errado
    ...
}

4) Usar asserções para argumentos de métodos públicos para verificar casos que, em hipótese alguma, deveriam acontecer - Para estes casos é permitido o uso de asserções.

public void divide(float divisor, float dividend) {
    assert(dividend > 0); // OK
    ...
}

5) Não usar asserções que alteram o estado do programa - O programa não pode se comportar de forma diferente se as asserções estiverem ou não ativadas

class Foo {
    int x = 0;
 
    public void doSomething() {
        assert(doMore()); // Errado
        ...
    }
 
    public void doMore() {
        x += 4;
    }
}

No código acima, o método doMore() não é executado se as asserções estiverem desativadas.