Ruby C扩展开发人员的命名约定

d11*_*wtq 11 c ruby

我有兴趣在C语言中为ruby编写扩展时遵循正确的命名约定.具体来说,我指的是添加_p谓词的函数名称和m为模块添加前缀c的类,等等.

例如,如果我们想在C中定义如下的谓词方法,我们应该_p在定义方法的函数中使用后缀作为后缀.

class MyClass
  def awesome?
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

在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);
}
Run Code Online (Sandbox Code Playgroud)

查看核心Ruby源代码,我看到_p(谓词)的后缀_m,而我无法从中推断出含义.我确信还有其他一些惯例.

还有其他命名约定,例如何时使用下划线以及何时使用骆驼外壳.在编写具有大量C代码的扩展时,如果没有指导原则,就很容易造成混乱.

某个地方有明确的清单吗?在谷歌搜索Ruby C扩展主题时,我似乎从未出现过有用的结果.任何显示纯Ruby语法和正确命名的等效C函数的快速示例?

mbi*_*tte 5

以下是更多内容:http://geoffgarside.co.uk/2007/05/20/ruby-c-extensions-nested-modules-classes/

Geoff Garside有几十个以ruby/C编写的回购.他是相当可靠的IMO.https://github.com/geoffgarside

当我找到更多时,我会继续寻找更多并编辑这篇文章.

编辑

看起来很难找到想要谈论ruby扩展命名约定的人......也许你可以尝试在M. Garside的指导下发送推文/电子邮件.他在推特上看起来非常活跃.