Porque devemos não usar assertLength

Posted . Visible to the public.

O assertLength foi desenvolvido e funciona de forma intuitiva apenas para arrays. Para listas ele não é nem um pouco intuitivo, pois:

  • Usar assertLength n, array equivale intuitivamente a assertEquals n, array.lenght ou ainda a assertEquals n, array.size(), ficando mais simples a escrita
  • Usar assertLength 1, lista equivale a assertNotNull lista pois uma lista vazia, com 1 elemento, ou com mais elementos será sempre um array de tamanho 1
  • Usar assertLength n, lista nunca irá deixar a execução passar pois uma lista vazia, com 1 elemento, ou com mais elementos será sempre um array de tamanho 1, e nunca um array de tamanho n diferente de 1
  • Caso o desejado fosse algo equivalente a assertEquals n, lista.size() o uso correto seria assertLength n, lista.toArray() o que não é uma melhor escrita de código do que a utilização do assertEquals, podendo na verdade até ser considerada pior

Isto é, o assertLength pode ser intuitivo e sucinto para arrays, mas é anti-intuitivo e pode gerar erros no desenvolvimento quando utilizado para listas. E mesmo que utilizado na forma correta para listas, não é uma melhor escrita de código do que a utilização do assertEquals, podendo na verdade até ser considerada pior.

Bruno Vieira
Last edit
Posted by Bruno Vieira to ZeroGlosa (2012-10-04 18:52)