Mudanças entre as edições de "Uso apropriado de asserções"
(Uma revisão intermediária 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); // | + | 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); // | + | assert(n > 10); // OK |
... | ... | ||
} | } | ||
Linha 33: | Linha 33: | ||
</source> | </source> | ||
− | 5) '''Não usar asserções que alteram o estado do programa''' - | + | 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()); // | + | 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 23h10min 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.