QVINTVS · SCRIBET

autoload ist missbilligt

Kernel#autoload ist seit ein paar Tagen missbilligt.

Das zumindest behauptet Peter Cooper von RubyInside mit Berufung auf diese Nachricht von Matz. Und die sieht ziemlich authentisch aus. Damit ist der Wahn, alles mögliche auf #autoload umzustellen, wohl erst einmal am Ende angekommen. Ich denke, dass das eine gute Nachricht für die Windows-Nutzer unter den Rubyisten ist, denn für Programme wie OCRA stellt #autoload eine ziemlich harte Nuss da. Ich persönlich halte den enstehenden Geschwindigkeitsvorteil von #autoload gegenüber einem ordinären #require für eher marginal; der Sinn sollte ja angeblich sein, später benötigte Komponenten später zu laden, aber das kann man auch mit #require tun, was dann auch noch expliziter ist. Rubys #require-Methode ist nun einmal nicht dasselbe wie ein #include in C(++); das kann man jederzeit auch innerhalb von Methoden aufrufen und ist nicht zwangsweise daran gebunden, es an den Dateianfang zu schreiben, weil der Interpreter/Compiler sich sonst daran verschlucken würde1. Nichtsdestotrotz sollte man diesen Gebrauch von #require natürlich gut überlegen und nicht grundlos machen. Es ist wesentlich übersichtlicher, wenn alles einzubindende am Anfang der betroffenen Datei zu finden ist.

Ich persönlich ziehe ein explizites #require jedenfalls dem schwer zu überblickenden #autoload vor (von der von Matz angesprochenen Thread-Problematik mal ganz abgeshen).

Freuen wir uns also auf:

Warning: Use of #autoload is deprecated. Use an explicit #require instead.

Valete.

1 OK, man kann zwar an prinzipiell jeder Stelle in C(++)-Code ein #include machen, aber effektiv wird dann ja trotzdem alles auf einmal geladen. Und im Übrigen ist das schlechter Stil.