Porque instruções assert não devem ser usadas para verificar parâmetros de métodos públicos?

7 respostas
B

Galera,

Ainda não entendi o porquê das instruções assert não poderem ser usadas para verificar parâmetros de métodos públicos.

Abraços :wink:

7 Respostas

C

Bruno_Leonardo:
Galera,

Ainda não entendi o porquê das instruções assert não poderem ser usadas para verificar parâmetros de métodos públicos.

Abraços :wink:

E eu nao entendi o que vc esta querendo dizer, pode demonstrar com algum codigo?

B

cmoscoso:
Bruno_Leonardo:
Galera,

Ainda não entendi o porquê das instruções assert não poderem ser usadas para verificar parâmetros de métodos públicos.

Abraços :wink:

E eu nao entendi o que vc esta querendo dizer, pode demonstrar com algum codigo?


Lendo esse artigo(http://www.guj.com.br/user.article.get.chain?page=1&article.id=23) e estudando pelo livro da Katty Sierra não ficou claro. Veja o trecho do artigo:


Seguindo os princípios do “Projeto por Contrato”, instruções assert podem ser usadas para verificar pré-condições, ou seja, se os valores ou parâmetros passados para um método são adequados para o correto funcionamento do método. Porém, as instruções assert não devem ser usadas para verificar parâmetros de métodos públicos.

ChronoTrigger

O livro do Sierra é claro.

O método publico normalmente será chamado por um código que vc desconhece e o PRÓPRIO MÉTODO deve tratar esse parâmetro de entrada e não um assert.

Com isso vc estaria utilizando o assert para validar algo que o próprio método deveria validar, fazendo com que seja gerado uma AssertException quando deveria ser lançada uma ExceçãoDeNegocioException.

B

ChronoTrigger:
O livro do Sierra é claro.

O método publico normalmente será chamado por um código que vc desconhece e o PRÓPRIO MÉTODO deve tratar esse parâmetro de entrada e não um assert.

Com isso vc estaria utilizando o assert para validar algo que o próprio método deveria validar, fazendo com que seja gerado uma AssertException quando deveria ser lançada uma ExceçãoDeNegocioException.


Cara, boa explicação. Acho que passei batido pela explicação do livro :oops:
Valeus :wink:

TangZero

A razão mais óbvia para não se usar assert para verificar parâmetros de métodos públicos, é o fato de as asserções poderem ser desabilitadas. Ou seja, a pessoa que utilizar suas classes, pode simplesmente desabilitar as asserções num sistema em produção, que é algo muito comum, e sua validação vai para o espaço!!!

Por isso, use asserções somente em métodos que somente você utiliza (privados), pois você pode controlar ou não as asserções enquanto desenvolve.

Espero ter ajudado. :lol:

B

TangZero:
A razão mais óbvia para não se usar assert para verificar parâmetros de métodos públicos, é o fato de as asserções poderem ser desabilitadas. Ou seja, a pessoa que utilizar suas classes, pode simplesmente desabilitar as asserções num sistema em produção, que é algo muito comum, e sua validação vai para o espaço!!!

Por isso, use asserções somente em métodos que somente você utiliza (privados), pois você pode controlar ou não as asserções enquanto desenvolve.

Espero ter ajudado. :lol:


Opá!!! Valeu pela resposta. Acho que tenho que parar de estudar de madrugada. Estou simplesmente lendo e assimilando muito pouco. Valeus :wink:

TangZero

Também estudei muito de madrugada… Acaba com o poder de assimilação. :stuck_out_tongue:

Criado 20 de agosto de 2008
Ultima resposta 20 de ago. de 2008
Respostas 7
Participantes 4