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

时间:2012-09-17 14:00:40

标签: c ruby

我有兴趣在C中编写ruby扩展时遵循正确的命名约定。具体来说,我指的是将_p添加到谓词的函数名称和使用m为变量添加前缀的内容。模块,等级为c等。

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

class MyClass
  def awesome?
    true
  end
end

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

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

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

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

1 个答案:

答案 0 :(得分: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的指导下发送推文/电子邮件。他在twitter看起来很活跃。