2012-09-17 12 views
11

Me interesa seguir las convenciones de nomenclatura correctas al escribir una extensión para ruby ​​en C. Específicamente, estoy refiriendo cosas como agregar _p a nombres de funciones de predicados y variables de prefijo con m para módulo , c para clase, etc.Convenciones de nomenclatura para desarrolladores de extensiones de Ruby C

Por ejemplo, si queremos definir un método de predicado como el siguiente en C, debemos usar _p como sufijo en la función que define el método.

class MyClass 
    def awesome? 
    true 
    end 
end 

En 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); 
} 

Mirando a través del código fuente de Ruby núcleo veo sufijos para _p (predicado) y _m, que yo no soy capaz de inferir un significado a partir. Estoy seguro de que hay varias otras convenciones.

Existen convenciones de nomenclatura adicionales, como cuándo usar guiones bajos y cuándo usar la carcasa de camello. Sería fácil crear un lío sin una guía a seguir al escribir una extensión con una cantidad sustancial de código C.

¿Hay alguna lista definitiva en alguna parte? Parece que nunca arrojo resultados útiles cuando busco en Google temas de extensión de Ruby C. ¿Algún ejemplo rápido que muestre la sintaxis pura de Ruby y la función C equivalente nombrada correctamente?

+0

Supongo que _m es el sufijo de un método. – Linuxios

+0

Supongo que buscas una guía escrita en inglés, no en japonés, ¿verdad? >< –

+0

@AndrewGrimm hay una guía impresionante escrita en japonés, con algunos trabajos parciales para traducirla al inglés (http://rhg.rubyforge.org/), pero sí, complicado :) – d11wtq

Respuesta

5

Aquí hay un par más: http://geoffgarside.co.uk/2007/05/20/ruby-c-extensions-nested-modules-classes/

Geoff Garside tiene un par de docenas de repos escrita en Ruby/C. Es IMO bastante creíble. https://github.com/geoffgarside

Seguiré buscando más y editando esta publicación cuando encuentre más.

EDITAR

Parece que es difícil encontrar a alguien que quiere hablar de rubí convenciones de nomenclatura de extensión ... Tal vez usted podría intentar enviar un tweet/correo electrónico en la dirección de M. Garside. Se ve bastante activo en twitter.

+1

Esto es útil, gracias. Si nada más definitivo aparece, te otorgaré la recompensa. – d11wtq

Cuestiones relacionadas