Creo que es totalmente válido para usar aseveraciones en Ruby. Pero usted menciona dos cosas diferentes:
- xUnit frameworks usa
assert
métodos para verificar las expectativas de sus pruebas. Están destinados a ser utilizados en su código de prueba, no en su código de aplicación.
- Algunos lenguajes como C, Java o Python incluyen una construcción
assert
destinada a ser utilizada dentro del código de sus programas, para verificar las suposiciones que hace sobre su integridad. Estos controles están construidos dentro del código mismo. No son una utilidad de tiempo de prueba, sino una herramienta de tiempo de desarrollo.
Hace poco escribí solid_assert: a little Ruby library implementing a Ruby assertion utility y también a post in my blog explaining its motivation .. Se permite escribir expresiones en la forma:
assert some_string != "some value"
assert clients.empty?, "Isn't the clients list empty?"
invariant "Lists with different sizes?" do
one_variable = calculate_some_value
other_variable = calculate_some_other_value
one_variable > other_variable
end
Y se puede desactivarse de manera assert
y invariant
se evalúan como declaraciones vacías. Esto le permite evitar cualquier problema de rendimiento en la producción. Pero tenga en cuenta que The Pragmatic Programmers desaconseja su desactivación. Solo debe desactivarlos si realmente afectan el rendimiento.
En cuanto a la respuesta que dice que la manera idiomática de Ruby usa una declaración normal raise
, creo que carece de expresividad. Una de las reglas de oro de la programación asertiva no es utilizar aserciones para el manejo de excepciones normales. Son dos cosas completamente diferentes. Si usa la misma sintaxis para los dos, creo que su código será más oscuro. Y, por supuesto, usted pierde la capacidad de desactivarlos.
Puede estar convencido de que usar afirmaciones es algo bueno porque dos libros clásicos de lectura obligatoria como The Pragmatic Programmer From Journeyman to Master y Code Complete les dedican secciones completas y recomiendan su uso. También hay un buen artículo titulado Programming with assertions que ilustra muy bien qué es la programación asertiva y cuándo usarla (está basada en Java, pero los conceptos se aplican a cualquier idioma).
Me gustan los problemas que hacen ambas cosas: enseñarte y hacer algo. :) –