我有兴趣在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函数的快速示例?
以下是更多内容: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的指导下发送推文/电子邮件.他在推特上看起来非常活跃.