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

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 7日 (水) 02:30:20 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
+ = Richtlinien der Namensgebung
  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