gtk+ Codestil - was ist besser
-
Ich lese zur Zeit ein bißchen in gtk+ herum und habe mich noch nicht für eine Anleitung entschieden. Mein englisch ist nicht perfekt, aber das englische hat mir am Anfang besser gefallen.
Und zwar geht es um die Deklaration und Verwendung von Variablen. Das englische Tutorial macht das so:button = gtk_button_new_with_label ("box1"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); button = gtk_button_new_with_label ("box2"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button);
was man auch hier genauer anschauen kann:
http://library.gnome.org/devel/gtk-tutorial/stable/x386.htmlDas deutsche Tutorial macht das anders.
GtkWidget *button1, *button2, *button3, *button_quit; GtkWidget *box; /*Gtk initialisieren*/ gtk_init(&argc, &argv); /*Ein neues Fenster erstellen*/ fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL); /*Buttons erstellen*/ button1 = gtk_button_new_with_label("Knopf 1"); button2 = gtk_button_new_with_label("Knopf 2"); button3 = gtk_button_new_with_label("Knopf 3");
was man auch hier genauer anschauen kann:
http://pronix.linuxdelta.de/C/gtk/gtk_C_Kurs_kapitel4.shtml
Ist es besser das Programm kürzer zu halten und ungeordnet oder eher richtig schön geordnet?
Es geht hauptsächlich um die verwendung von einzelnen oder mehreren Variablen.Was genau ist jetzt performanter, was macht den code kleiner und was findet Ihr aus welchen Gründen besser? Ich bin echt ratlos, was ich mir angewöhnen soll...
-
Die Frage habe ich mir auch gestellt, zu einer eindeutigen Antwort bin ich aber nicht gekommen.
Das Gute an freier Software ist, dass man von dem Code der Meister lernen kann.
Sehen wir uns mal Code von Gedit an:static void gedit_progress_info_bar_init (GeditProgressInfoBar *bar) { GtkWidget *vbox; GtkWidget *hbox; GtkWidget *content; bar->priv = GEDIT_PROGRESS_INFO_BAR_GET_PRIVATE (bar); vbox = gtk_vbox_new (FALSE, 6); gtk_widget_show (vbox); hbox = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); /* ... */ }
Hier, und auch in praktisch allen anderen GNOME-eigenen Quelltexten wird es in diesem Stil geschrieben.
Ein weiterer unterschied zu deinem deutschen Tutorial ist, dass der Rückgabe in einer zusätzlichen Zeile spezifiert wird.
Ausserdem werden viele Leerzeilen eingefügt.Du kannst dir den generellen Stil dieser Projekte anschauen, da ist vieles sehr schön gellöst (GEDIT_PROGRESS_INFO_BAR_GET_PRIVATE) und der generelle Aufbau ist auch schön einheitlich.
Wenn du aber auf Gründe der Performanz verweist, müsste man dich an die Grundlagen verweisen; ob die Deklaration in zwei oder einer Anweisung, ob sie am Anfang der Funktion oder an ihrem Ende steht: von ihrer Bedeutung sowie ihrer Auswirkungen auf Performanz sind die beiden Schreibweisen identisch.
Als gewissenhafter GTK+-Programmierer sollte man man sich vermutlich die lange und "geordnete" Variante angewöhnen, aber jeden einzelnen Typ in Glib-Art zu definieren und immer so lange Funktionsnamen wie von GTK+ verwendet zu nehmen kann _sehr_ viel Schreibarbeit bedeuten.
Für kleinere GTK+-Projekte habe ich erst einen lascheren Programmierstil verwendet um später auf gtk2-perl umzusteigen. Mikro-Geschwindigkeitsschübe ade.
-
Nun um ehrlich zu sein hat deine Frage ja eigentlich nichts mit gtk+ zu tun. Letztendlich bezieht sich deine Frage auf C++.
Natürlich können manche Konstrukte weniger performant sein als andere, jedoch musst du dir auch im klaren darüber sein, dass beim compilen des Codes nochmal der Optimizer des Compilers deinen Code optimiert.
Von deinen Beispielen ausgehend ist es wahrscheinlich preformance-technisch ziemlich egal welche Schreibweise du wählst. Spaces und Leerzeilen interessieren den Compiler z.B. überhaupt nicht.
Insofern würde ich dir ratenden Code so zu schreiben das er Übersichtlich und gut lesbar ist und kann mich an dieser Stelle dann auch gimpy anschließen: Am meisten lernt man von erfahrenen Programmierern.