[ruby-gnome2-doc-cvs] [Hiki] create - Naming and Conversion Rules

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 7日 (水) 02:27:05 JST


-------------------------
REMOTE_ADDR = 80.137.240.135
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/de/?Naming+and+Conversion+Rules
-------------------------
= Richtlinien der Benennung von Ruby-GNOME2-Klassen
Sie sollten sich an diesem Dokument orientieren, wenn Sie Komponenten f$B(B Ruby-GNOME implementieren.

== Bibliotheksnamen
Ruby-GNOME2 steht f$B(B das gesamte Projekt.

Wenn Sie $B(Ber eine Ruby-GNOME2-Komponente sprechen, benutzen Sie "/". Als Beispiele:

* Ruby/GNOME - Modul gnome2
* Ruby/GnomeCanvas - Modul gnomecanvas2
* Ruby/GTK - Modul gtk2
* Ruby/GLib - Modul glib2 (glib2 wird immer von anderen Bibliotheken verwendet)
* Ruby/Libglade - Modul libglade

Sie k$B(Bnen auch Ruby/GNOME2 oder Ruby/GTK2 schreiben, wenn sie den Unterschied zwischen dem aktuellen Framework (Ruby-GNOME2) und der alten Version (Ruby-GNOME, basierend auf GTK+ 1.2) deutlich machen wollen.

== Klassen- und Modulnamen
$B\b(Blicherweise ist ein Ruby-Objekt auf ein C-Struct gemappt. Es wird nach dem ersten Pr$Bdf(Bix getrennt.

* GtkWidget -> Gtk::Widget
* GtkTextView -> Gtk::TextView
* GdkGLWindow -> Gdk::GLWindow
* GnomeCanvas -> Gnome::Canvas
* GnomeCanvasItem -> Gnome::CanvasItem
* GnomeDruidPageEdge -> Gnome::DruidPageEdge
* PangoFontFamily -> Pango::FontFamily
* GConfClient -> GConf::Client

Wir trennen nicht nach diesem Muster:
* GtkTextView -> Gtk::Text::View (NG)
* GnomeDruidPageEdge -> Gnome::Druid::Page::Edge (NG)
Auch nicht nach diesem:
* GdkGLWindow -> GdkGL::Window (NG)
* GnomeCanvasItem -> GnomeCanvas::Item (NG)

Es gibt einige Ausnahmen:
* GObject -> GLib::Object
* GnomeVFSDirectory -> GnomeVFS::Directory
* HtmlDocument(Ruby/GtkHtml2) -> Gtk::HtmlDocument

Wenn es kein ernstes Problem gibt, verwenden Sie einfach den allgemeinen Weg.

== Akzessoren (Setter-/Getter-Methoden)

Es gibt zwei Muster, in jedem davon sollten Sie alle Methoden implementieren.

* Die Methode hat nur ein Argument.

 Setter: hoge=(a)             # Gibt a zur$B|c(Bk.
         set_hoge(a)          # Gibt self zur$B|c(Bk.
 Getter: hoge                 # Gibt den Wert von hoge zur$B|c(Bk.

* Die Methode hat 2 oder mehr Argumente.

 Setter: set_fuga(a, b)       # Gibt self zur$B|c(Bk.
 Getter: fuga                 # Hat keine Argumente. Gibt den Wert von fuga zur$B|c(Bk.
         get_fuga(a, b)       # Hat Argumente. Gibt den Wert von fuga zur$B|c(Bk.

== is_*-Methoden
Benutzen Sie statt "is_foo" lieber "foo?", es entspricht eher dem Ruby-Stil.

== has_*-, use_*-Methoden
Wenn eine Methode einen booleschen Wert oder einen Wert vom Typ gboolean zur$B|c(Bkgibt, f$B|g(Ben Sie dem Methodennamen noch ein ? an.

  has_foo -> has_foo?
  use_bar -> use_bar?

== set/get_has_*-, set/get_use_*-Methoden

  get_has_foo -> has_foo?
  set_has_foo -> has_foo=(a), set_has_foo(a)
  get_use_foo -> use_foo?
  set_use_foo -> use_foo=(a), set_use_foo(a)

== classname_foo_set_bar, classname_foo_get_bar ...
Es gibt ein paar Methoden, die nicht mit einem Verb wie set, get, is, has oder use beginnen. Wir halten diese Muster nicht f$B|r(B gute Benennungen. Aber wir entfernen auch nicht die Verben aus ihnen, wie in den folgenden Beispielen.

  gtk_classname_foo_set_bar -> Gtk::ClassName#foo_set_bar
  gtk_classname_foo_get_bar -> Gtk::ClassName#foo_get_bar
  gtk_classname_foo_get_bar -> Gtk::ClassName#foo_get_bar?
  gtk_classname_foo_is_bar -> Gtk::ClassName#foo_is_bar?
  gtk_classname_foo_has_bar -> Gtk::ClassName#foo_has_bar?
  gtk_classname_foo_use_bar -> Gtk::ClassName#foo_use_bar?

== Destruktive Methoden (die das Objekt selbst $Bdn(Bdern)
$B\b(Blicherweise haben destruktive Methoden ein ! am Ende ihres Namens. Beispielsweise Gtk::TreeIter#first!, #next!, Gtk::TreePath#prev!, #next!, #up!, #down!.

(*) Beachten Sie, dass '!' am Ende einer Ruby-Methode f$B|r(B "Vorsicht" oder "gef$Bdh(Brlich" steht. Es wird benutzt, um den Programmierer dar$B|b(Ber zu informieren, dass diese Methode das Objekt selbst $Bdn(Bdert.

== *_foreach-Methoden
$BDn(Bdern Sie sie zu 'each'.

== list_foos-Methoden
If it returns an array which is converted from GList or GSList, rename them to 'foos'.

== Instanzmethoden, die void zur$B|c(Bkgeben
Return self.

== initialize
Return Qnil.

== Klassenmethoden oder Modulmethoden, die void zur$B|c(Bkgeben
Return Qnil.

== Konstanten
Manchmal ist diese Definition etwas schwierig. Wenn Sie nicht sicher sind, fragen Sie in der Mailing-Liste.

* Wenn die Konstanten zu einem Objekt geh$Bvr(Ben (Klasse oder Modul), binden Sie die Konstanten in die Member des Objektes ein.
  Am Beispiel von GtkDialog sieht das so aus:

      GtkDialogFlags
         GTK_DIALOG_MODAL               -> Gtk::Dialog::MODAL
         GTK_DIALOG_DESTROY_WITH_PARENT -> Gtk::Dialog::DESTROY_WITH_PARENT
         GTK_DIALOG_NO_SEPARATOR        -> Gtk::Dialog::NO_SEPARATOR
  
      GtkResponseType
         GTK_RESPONSE_NONE     ->  Gtk::Dialog::RESPONSE_NONE
         GTK_RESPONSE_REJECT   ->  Gtk::Dialog::RESPONSE_REJECT
         GTK_RESPONSE_ACCEPT   ->  Gtk::Dialog::RESPONSE_ACCEPT

* Die Konstanten sind unabh$Bdn(Bgig von Objekten:

    GTK_FOO_BAR -> Gtk::FOO_BAR

== Klassen, Module und Methoden
$B\b(Blicherweise ist ein C-Struct in eine Ruby-Klasse gemappt. Aber wenn es kein C-Struct gibt, k$Bvn(Bnen Sie die Gruppe als Ruby-Modul implementieren.
Hier gibt es eine Ausnahme: Methoden, dessen erstes Argument eine andere Klasseninstanz ist. In diesem Fall ist es besser, die Methode in der anderen Klasse zu implementieren.

== Mehrere Methoden, die eine gleiche Bedeutung haben, aber verschiedene Argumentlisten annehmen
Kombinieren Sie diese in einer einzigen Methode.

== Verschiedenes
* Sie k$Bvn(Bnen neue Methoden hinzuf$B|g(Ben, die noch nicht in der C-Bibliothek existieren.
* Sie k$Bvn(Bnen einige Funktionen der C-Bibliotheken umbenennen, um sie mehr an den Ruby-Stil anzupassen.

Diese Punkte sind nicht verboten, denn Ruby-GNOME2 ist nicht nur ein Ruby-Wrapper f$B|r(B GNOME oder GTK+. Aber bitte schreiben Sie Ihre Verbesserungsvorschl$Bdg(Be vorher in die Mailing-Liste.

=== ChangeLog
:2003-10-11 ((<Masao>))
 Add Class/Modlue names.
:2003-10-05 ((<Masao>))
 Add list_foos rule.





ruby-gnome2-cvs メーリングリストの案内
Back to archive index