2013-04-02 11 views
6

Ich arbeite an einigen Erweiterungen für Rebol 3 (posix/fann/math).Rebol, Erweiterungen und Funktionsbenennung

Um globale Namensraumverschmutzung zu vermeiden, exportiere ich die Funktionen mit einer einfachen Präfix-Quellenkennung. Zum Beispiel: POSIX-FORK für fork oder POSIX-NANOSLEEP für nanosleep.

Gibt es einen besseren Ansatz oder eine offizielle Rebol-Namenskonvention?

Antwort

6

Das ist eine ziemlich standardmäßige Namenskonvention für Rebol-Exporte, obwohl sie im Code natürlich Kleinbuchstaben sein sollten. Die Großschreibung ist nur eine Namenskonvention, wenn es um Funktionen in Chat-Clients oder Websites geht, die keinen Code wie this anzeigen können. Im Allgemeinen werden Wörter im Rebol-Code nicht großgeschrieben, es sei denn, sie werden für etwas anderes verwendet.

Wenn Sie jedoch die globale Namensraumverschmutzung vermeiden möchten, deklarieren Sie Ihr Erweiterungsmodul mit dem Header options: [private]. Das macht es so, dass die Exporte Ihres Moduls nur von Modulen oder Skripten importiert werden, die diese explizit mit import oder dem needs Header anfordern. Dies gilt insbesondere für Module oder Erweiterungen, die C-ähnliche Low-Level-APIs exportieren, die am besten nur von den Modulen importiert werden, die die übergeordneten Wrapper implementieren. Es ist gut, sich daran zu erinnern, dass der Modulteil der Erweiterung ein vollständiges Rebol-Modul ist, und es ist oft am besten, den Wrapper-Code auf hoher Ebene dort zu platzieren und die C-ähnlichen Funktionen überhaupt nicht zu exportieren und sie für den internen Gebrauch zu behalten.

Ein weiterer Trick ist, dass wenn Sie Konstanten oder Enum-Werte exportieren, ist es am besten, sie in ein Objekt in Ihrem Modul zu setzen und das Objekt stattdessen zu exportieren. Auf diese Weise exportieren Sie nicht in den globalen Namespace, und Sie können die Wörter vor Änderungen schützen.

Ein weiterer Trick ist es, Sachen überhaupt nicht zu exportieren und Leute importieren Ihr Modul mit der import Funktion. Wenn Sie die Wörter Ihres Moduls nicht als verborgen markieren, sind sie auch dann verfügbar, wenn sie nicht exportiert werden. Dies ist jedoch in den meisten Fällen etwas unpraktisch, daher ist es besser, stattdessen ein eigenes Modul zu verwenden. Sie können auch Ihre High-Level-API exportieren und nicht exportieren Sie Ihre Low-Level-API, so dass die Low-Level-API zum Importieren verfügbar ist, wenn jemand es verwenden möchte.

prüfen für eine gründlichere Antwort darüber, wie Module und Erweiterungen verwendet werden: How are words bound within a Rebol module?

+0

Vielen Dank für Klärung wird Ihr Link gut geschrieben und gut zu lesen. – TomBon