Подтвердить что ты не робот

Соглашения об именах для разработчиков расширений Ruby C

Я заинтересован в соблюдении правильных правил именования при написании расширения для ruby ​​в C. В частности, я ссылаюсь на такие вещи, как добавление _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, названную правильно?

4b9b3361

Ответ 1

Вот еще пара: http://geoffgarside.co.uk/2007/05/20/ruby-c-extensions-nested-modules-classes/

Geoff Garside имеет пару десятков репозиториев, написанных на рубине /C. Он довольно правдоподобный ИМО. https://github.com/geoffgarside

Я буду продолжать искать и редактировать этот пост, когда найду больше.

ИЗМЕНИТЬ

Похоже, трудно найти кого-то, кто хочет поговорить о соглашениях об именах ruby ​​extension... Возможно, вы могли бы попробовать отправить твит/электронную почту в направлении M. Garside. Он выглядит довольно активно на twitter.