2012-09-17 12 views
11

Chciałbym postępować zgodnie z prawidłowymi konwencjami nazewnictwa, pisząc rozszerzenie ruby ​​w C. W szczególności mówię o dodawaniu _p do nazw funkcji predykatów i zmiennych prefiksowych za pomocą m dla modułu , c dla klasy itp.Konwencje nazewnictwa dla programistów rozszerzeń języka Ruby C

Na przykład, jeśli chcemy zdefiniować metodę predykatu, jak w C, powinniśmy użyć _p jako sufiksu w funkcji, która definiuje metodę.

class MyClass 
    def awesome? 
    true 
    end 
end 

w C:

static VALUE my_extension_my_class_awesome_p(VALUE self) { 
    return Qtrue; 
} 

void Init_my_extension(void) { 
    VALUE cMyClass = rb_define_class("MyClass", rb_cObject); 

    rb_define_method(cMyClass, 
        "awesome?", 
        my_extension_my_class_awesome_p, 
        0); 
} 

Patrząc przez rdzeń kodu źródłowego Ruby widzę przyrostków dla _p (predykat) i _m, których nie jestem w stanie wywnioskować znaczenie z. Jestem pewien, że istnieje wiele innych konwencji.

Istnieją dodatkowe konwencje nazewnictwa, np. Kiedy stosować podkreślenia i kiedy używać wielbłądzowej obudowy. Łatwo byłoby stworzyć bałagan bez wytycznych do zastosowania przy pisaniu rozszerzenia z dużą ilością kodu C.

Czy istnieje gdzieś ostateczna lista? Nigdy nie wydaje się, aby wyniki były przydatne podczas wyszukiwania w Google dla tematów rozszerzenia Ruby C. Jakieś szybkie przykłady, które pokazują poprawnie składnię Ruby i odpowiadającą jej funkcję C?

+0

Zgaduję, że _m jest przyrostkiem dla metody. – Linuxios

+0

Zakładam, że szukasz przewodnika po angielsku, a nie po japońsku, prawda? >< –

+0

@AndrewGrimm jest niesamowity przewodnik napisany po japońsku, z częściową pracą do przetłumaczenia go na angielski (http://rhg.rubyforge.org/), ale tak, podchwytliwe :) – d11wtq

Odpowiedz

5

Oto kilka więcej: http://geoffgarside.co.uk/2007/05/20/ruby-c-extensions-nested-modules-classes/

Geoff Garside ma kilka dziesiątki repo napisanych w Ruby/C. Jest całkiem wiarygodnym IMO. https://github.com/geoffgarside

Będę szukał więcej i edytował ten post, gdy znajdę więcej.

EDIT

Wygląda na to, że trudno znaleźć kogoś, kto chce mówić o rubinowe konwencji nazewnictwa przedłużenie ... Być może można spróbować wysłać tweeta/email w kierunku M. Garside użytkownika. Wygląda całkiem aktywnie na twitter.

+1

Jest to przydatne, dzięki. Jeśli nie pojawi się nic bardziej ostatecznego, przyznam ci nagrodę. – d11wtq