【问题标题】:Naming conventions for Ruby C extension developersRuby C 扩展开发人员的命名约定
【发布时间】:2012-09-09 18:24:39
【问题描述】:

在用 C 语言编写 ruby​​ 扩展时,我有兴趣遵循正确的命名约定。具体来说,我指的是在谓词的函数名称中添加 _p 以及为模块添加前缀 m 的变量,@987654324 @类等。

例如,如果我们想在 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 函数吗?

【问题讨论】:

  • 我猜 _m 是一个方法的后缀。
  • 我想你是在寻找用英文而不是日文写的指南,对吧? >
  • @AndrewGrimm 有一个很棒的日文指南,需要部分工作才能将其翻译成英文 (rhg.rubyforge.org),但是是的,很棘手 :)

标签: c ruby


【解决方案1】:

还有几个:http://geoffgarside.co.uk/2007/05/20/ruby-c-extensions-nested-modules-classes/

Geoff Garside 有几十个用 ruby​​/C 编写的 repos。他是相当可信的IMO。 https://github.com/geoffgarside

我会继续寻找更多内容,并在找到更多内容时编辑这篇文章。

编辑

看起来很难找到想要谈论 ruby​​ 扩展命名约定的人...也许您可以尝试向 M. Garside 发送推文/电子邮件。他在twitter 上看起来很活跃。

【讨论】:

  • 这很有用,谢谢。如果没有更确定的结果,我会将赏金奖励给你。
猜你喜欢
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多