Ich denke, es ist absolut gültig, Asserts in Ruby zu verwenden. Aber Sie erwähnen zwei verschiedene Dinge:
- xUnit-Frameworks verwenden
assert
Methoden zur Überprüfung Ihrer Testerwartungen. Sie sollen in Ihrem Testcode verwendet werden, nicht in Ihrem Anwendungscode.
- Einige Sprachen wie C, Java oder Python enthalten eine
assert
Konstruktion, die im Code Ihrer Programme verwendet werden soll, um die von Ihnen getroffenen Annahmen über deren Integrität zu überprüfen. Diese Überprüfungen werden im Code selbst erstellt. Sie sind kein Dienstprogramm zur Testzeit, sondern ein Dienstprogramm zur Entwicklungszeit.
Ich habe kürzlich solid_assert geschrieben: eine kleine Ruby-Bibliothek, die ein Ruby-Assertion-Dienstprogramm implementiert, sowie einen Beitrag in meinem Blog, in dem die Motivation erläutert wird .
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
Und sie können so deaktiviert assert
und invariant
als leere Anweisungen ausgewertet werden. Auf diese Weise können Sie Leistungsprobleme in der Produktion vermeiden. Beachten Sie jedoch, dass die Pragmatischen Programmierer davon abraten, sie zu deaktivieren. Sie sollten sie nur deaktivieren, wenn sie sich wirklich auf die Leistung auswirken.
In Bezug auf die Antwort, dass der idiomatische Ruby-Weg eine normale raise
Aussage verwendet, denke ich, dass es an Ausdruckskraft mangelt. Eine der goldenen Regeln der durchsetzungsfähigen Programmierung besteht darin, keine Zusicherungen für die normale Ausnahmebehandlung zu verwenden. Das sind zwei völlig verschiedene Dinge. Wenn Sie für beide dieselbe Syntax verwenden, wird Ihr Code meiner Meinung nach dunkler. Und natürlich verlieren Sie die Fähigkeit, sie zu deaktivieren.
Sie können davon überzeugt sein, dass die Verwendung von Behauptungen eine gute Sache ist, da zwei klassische Bücher wie The Pragmatic Programmer From Journeyman to Master und Code Complete ihnen ganze Abschnitte widmen und ihre Verwendung empfehlen. Es gibt auch einen schönen Artikel mit dem Titel Programmieren mit Behauptungen , die sehr gut veranschaulichen, worum es bei durchsetzungsfähiger Programmierung geht und wann sie verwendet werden soll (sie basiert auf Java, aber Konzepte gelten für jede Sprache).