Klasse: Überall "this->" vorkleben?
-
Nathan schrieb:
Die einzigen Bezeichner, die ein Buchstabe lang sein können, sind immer noch x und y.
Das könnn noch etliche mehr sein:
//implemented after Rosenberg et.all "A smart way to optimize the Bar problem", formula (16) return a*b+C/phi*epsilon_sqrt(epsilon/exp(gamma));in der Tat wäre es an der Stelle verwirrend, irgendwelche anderen Bezeichner als die im Paper zu verwenden.
-
Ich habe mich wohl sehr unklar ausgedrückt.
Natürlich sind kleine Bezeichner in Ordnung, wenn der Kontext ihnen eine eindeutige Bezeichnung gibt.
-
Shade Of Mine schrieb:
Warum haben dann Memberfunktionen keinen Prefix?
Gilt diese Argumentation denn nicht 1:1 auch fuer Funktionen?Ein Teil trifft auf Funktionen zu, nicht alles.
Namenskollisionen sind sehr selten (bei Variablen hat man sie schon in fast jedem Setter, teilweise auch Konstruktor). Tendenziell werden innerhalb der Klasse mehr Memberfunktionen als globale Funktionen aufgerufen. Viele globale Funktionsaufrufe sind durch Namensräume qualifiziert.
-
Nexus schrieb:
Shade Of Mine schrieb:
Warum haben dann Memberfunktionen keinen Prefix?
Gilt diese Argumentation denn nicht 1:1 auch fuer Funktionen?Ein Teil trifft auf Funktionen zu, nicht alles.
Was genau trifft auf Funktionen denn nicht zu?
Bedenke dabei: lokale Variablen sind auf den 1. Blick erkennbar (die Definition der Variable ist ja direkt in der Funktion sichtbar), der Unterschied Memberfunktion oder globale Funktion aber nicht.Und Namensraumqualifizierungen sollten nicht oft vorkommen - wir haben using dafuer.
-
Shade Of Mine schrieb:
Was genau trifft auf Funktionen denn nicht zu?
Das steht im zweiten Teil meines Posts...
Shade Of Mine schrieb:
Und Namensraumqualifizierungen sollten nicht oft vorkommen - wir haben using dafuer.
Warum nicht? Ich verwende die
using-Deklaration und -Direktive sehr selten.
-
Also ist Namenskollision das einzige Argument fürs Membervariablen Kennzeichnen?
Ich bin mir nicht sicher ob wirklich mehr Memberfunktionen als externe Funktionen verwendet werden. Wenn ich bei meinen Codes so durchschaue, werden eher selten Memberfunktionen aufgerufen.
Ich will nicht über using Sprechen, aber wenn du in deinem::code::dauernd::doppelpunkte::stehen::hast::dann::könnte::das::schwer::zu::lesen::sein.

-
Es geht darum, potenzielle Zugriffe auf das Objekt schneller zu erkennen. Bei Variablen wird das durch
m-Präfixe möglich. Bei Funktionen kann ich diejenigen ausschliessen, die durch Namensräume qualifiziert sind. Übrig bleiben dann vor allem Memberfunktionen und ein paar globale Funktionen, bei denen ich dann genauer hinschaue. Ich glaube du verstehst die Absicht dahinter falsch: Ich will nicht sämtliche Scopes eindeutig klassifizieren, sondern die meisten Fälle im Bezug auf Objekt-Zugriffe abdecken. Mein System ist nicht die totale Lösung, aber es ist meiner Meinung nach ein guter Kompromiss zwischen Aufwand und Ertrag.Ich habe recht selten verschachtelte Namensräume. Es gibt ja auch die Möglichkeit, lange Namensraumqualifizierer mittels eines Alias kürzer zu machen. Sowas wie
std::schreibe ich eigentlich immer hin, ausser ich möchte tatsächlich ADL verwenden, z.B. beiswap().
-
Nexus schrieb:
Es geht darum, potenzielle Zugriffe auf das Objekt schneller zu erkennen. Bei Variablen wird das durch
m-Präfixe möglich. Bei Funktionen kann ich diejenigen ausschliessen, die durch Namensräume qualifiziert sind. Übrig bleiben dann vor allem Memberfunktionen und ein paar globale Funktionen, bei denen ich dann genauer hinschaue. Ich glaube du verstehst die Absicht dahinter falsch: Ich will nicht sämtliche Scopes eindeutig klassifizieren, sondern die meisten Fälle im Bezug auf Objekt-Zugriffe abdecken. Mein System ist nicht die totale Lösung, aber es ist meiner Meinung nach ein guter Kompromiss zwischen Aufwand und Ertrag.Und ich zeige dir inkonsistenz auf.
Warum gilt deine Argumentation für Funktionen nicht?
Du kennzeichnest die Member weil du es so gelernt hast. Habe ich auch gemacht - habe auch viel Zeit reingesteckt wie man die Sachen am besten Kennzeichnet. Aber im endeffekt ist jede Kennzeichnung nur random.
-
Shade Of Mine schrieb:
Und ich zeige dir inkonsistenz auf.
Das musst du mir nicht aufzeigen, das bringt "Ich will nicht sämtliche Scopes eindeutig klassifizieren" eben mit sich

Ich glaube, wir haben mittlerweile alles diskutiert. Ich kann ja mal wieder ein kleines Projekt ohne
m-Präfixe versuchen und schauen, wie lange es geht, bis mich das ganze aufregt
-
Nexus schrieb:
Shade Of Mine schrieb:
Und ich zeige dir inkonsistenz auf.
Das musst du mir nicht aufzeigen, das bringt "Ich will nicht sämtliche Scopes eindeutig klassifizieren" eben mit sich

Davon rede ich nicht. Ich rede von Funktionen und Variablen. Beide im selben Scope. Keine unterschiedlichen.
-
Ich habe versucht klarzumachen, wieso ich Variablen kennzeichne und Funktionen nicht. Das ist nicht random (Willkür), lies nochmal die Begründung. Du bist der Ansicht, nur beides oder nichts wären gangbare Wege -- okay. Sehen wir halt anders, ich werde jedenfalls nicht nochmals jeden Punkt einzeln durchdiskutieren.
-
Nexus schrieb:
Du bist der Ansicht, nur beides oder nichts wären gangbare Wege
Nein, bin ich nicht.