<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Eine Frage des Stils?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mir verschiedene, in C oder C++ geschriebene, Frameworks und Programme angeguckt. Dabei sind mir hauptsächlich zwei Programmierstile aufgefallen.</p>
<p>Bei einem Stil werden die<br />
* Methoden SoGeschrieben<br />
* Attribute soGeschrieben</p>
<p>Wobei die Methoden in manchen Fällen auch mit einem kleinen Buchstaben beginnen.</p>
<p>Bei dem anderen Stil werden die<br />
* Methoden so_geschrieben<br />
* Attribute m_so_geschrieben</p>
<p>In einigen Fällen wurde das m am Anfang eines Attributes auch weggelassen.</p>
<p>Nun frage ich mich, wann welcher Stil verwendet wird. QT nutzt den ersten.<br />
Der Linux Kernel wurde im zweiten Stil geschrieben. Das ließ mich vermuten, dass der zweite Stil noch aus C stammt (mit Funktionen und structs natürlich). Allerdings habe ich dann Boost gesehen, welches auch im zweiten Stil geschrieben wurde.</p>
<p>Aus einem Buch habe ich den ersten Stil für C++ gelernt. Der zweite verwirrt mich jetzt ein bisschen, da ich bspw. durch Frameworks z.T. dazu gezwungen bin mir diesen in einigen Klassen anzueignen.</p>
<p>Meine Konkrete Frage ist nun:<br />
Wann wird welcher Stil benutzt? Gibt es dafür eine Art &quot;best practice&quot; oder ist man an dieser Stelle dem Gemüt des Frameworkentwicklers ausgeliefert?</p>
<p>Vielen Dank und Grüße</p>
<p>yacb<br />
(yet another c(++) beginner)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274932/eine-frage-des-stils</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 06:16:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274932.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Oct 2010 15:59:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 15:59:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mir verschiedene, in C oder C++ geschriebene, Frameworks und Programme angeguckt. Dabei sind mir hauptsächlich zwei Programmierstile aufgefallen.</p>
<p>Bei einem Stil werden die<br />
* Methoden SoGeschrieben<br />
* Attribute soGeschrieben</p>
<p>Wobei die Methoden in manchen Fällen auch mit einem kleinen Buchstaben beginnen.</p>
<p>Bei dem anderen Stil werden die<br />
* Methoden so_geschrieben<br />
* Attribute m_so_geschrieben</p>
<p>In einigen Fällen wurde das m am Anfang eines Attributes auch weggelassen.</p>
<p>Nun frage ich mich, wann welcher Stil verwendet wird. QT nutzt den ersten.<br />
Der Linux Kernel wurde im zweiten Stil geschrieben. Das ließ mich vermuten, dass der zweite Stil noch aus C stammt (mit Funktionen und structs natürlich). Allerdings habe ich dann Boost gesehen, welches auch im zweiten Stil geschrieben wurde.</p>
<p>Aus einem Buch habe ich den ersten Stil für C++ gelernt. Der zweite verwirrt mich jetzt ein bisschen, da ich bspw. durch Frameworks z.T. dazu gezwungen bin mir diesen in einigen Klassen anzueignen.</p>
<p>Meine Konkrete Frage ist nun:<br />
Wann wird welcher Stil benutzt? Gibt es dafür eine Art &quot;best practice&quot; oder ist man an dieser Stelle dem Gemüt des Frameworkentwicklers ausgeliefert?</p>
<p>Vielen Dank und Grüße</p>
<p>yacb<br />
(yet another c(++) beginner)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961731</guid><dc:creator><![CDATA[yacb]]></dc:creator><pubDate>Tue, 05 Oct 2010 15:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 16:13:07 GMT]]></title><description><![CDATA[<p>Es gibt keine Regel oder Richtlinie. Jedem ist freigestellt wie er sein Programm schreibt.</p>
<blockquote>
<p>best practice</p>
</blockquote>
<p>Dieses und Industriestandard (als Buzzwort im Sinne von &quot;best practice&quot;) sind fuer Idioten. Glueck verschenken, selber denken!</p>
<p>Wie nennst du denn Variablen? Macht es wirklich so viel aus, den ersten Buchstaben einer Methode gross oder klein zu schreiben? Irgendwer hat mal die Namenskonventionen fuer das Projekt festgelegt und der Einheitlichkeit wegen wird sich dran gehalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961734</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 05 Oct 2010 16:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 16:42:46 GMT]]></title><description><![CDATA[<p>Alles eine Frage des Geschmacks.. Das ist genau so wie mit der &quot;Ungarischen Notation&quot;. Ob diese sinnvoll ist oder nicht sei dahin gestellt.. Ich hab sie mir angewöhnt..</p>
<p>Und meine Methoden beginn ich jetzt immer mit mldsgvloxhtrltj_foo(); <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961757</guid><dc:creator><![CDATA[NEO.PIXEL]]></dc:creator><pubDate>Tue, 05 Oct 2010 16:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 16:46:56 GMT]]></title><description><![CDATA[<p>Es ist ganz sicher eine Frage des eigenen Geschmacks, aber es hat(te) oft auch einige praktische Hintergründe.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double mPreis;

public:
 Auto(double Preis) : mPreis(Preis) { }
};
</code></pre>
<p>In diesem Fall ist das m als Präfix sinnvoll, weil man so keine Namensüberschneidung bekommt. Folgendes wäre nämlich fatal:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double Preis;

public:
 Auto(double Preis) : Preis(Preis) { } // Selbstinitialisierung!
};
</code></pre>
<p>Wie man dieses Problem löst ist dann Stilfrage. Folgendes wäre auch möglich:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double Preis;

public:
 Auto(double Preis)
 {
  this-&gt;Preis = Preis;
 }
};
</code></pre>
<p>Und die differenzierte Schreibweise von Funktionen war damals so gängig, da man so besser sehen konnte, dass es sich um eine Funktion handelt. Und so weiter...</p>
<p>Wie du das also für dich löst bleibt dir selbst überlassen. Such dir das aus, was dir am besten zusagt und womit du dich am besten identifizieren kannst.</p>
<p>Sollte dein Stil absolut grauenvoll sein, dann wird man dich da schon darauf hinweisen, wenn du mal Code postest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961762</guid><dc:creator><![CDATA[vvvvvvvv]]></dc:creator><pubDate>Tue, 05 Oct 2010 16:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 16:51:15 GMT]]></title><description><![CDATA[<p>vvvvvvvv schrieb:</p>
<blockquote>
<p>In diesem Fall ist das m als Präfix sinnvoll, weil man so keine Namensüberschneidung bekommt. Folgendes wäre nämlich fatal:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double Preis;

public:
 Auto(double Preis) : Preis(Preis) { } // Selbstinitialisierung!
};
</code></pre>
</blockquote>
<p>Ne, das ist vollkommen OK so. Ich verwende das staendig. (bis auf dass ich Variablen immer klein schreibe)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961763</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 05 Oct 2010 16:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 17:38:38 GMT]]></title><description><![CDATA[<p>Danke für die schnellen Antworten.<br />
So etwas in der Art habe ich mir schon gedacht, wollte es nur noch einmal bestätigt haben.</p>
<p>Es ist denn wohl eine Frage der Gewöhnung, dass man in einem Programm verschiedene Stile verwenden muss, damit man die verschiedenen Bibliotheken nutzen kann (Polymorphie lässt grüßen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961782</guid><dc:creator><![CDATA[yacb]]></dc:creator><pubDate>Tue, 05 Oct 2010 17:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 19:17:30 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>vvvvvvvv schrieb:</p>
<blockquote>
<p>In diesem Fall ist das m als Präfix sinnvoll, weil man so keine Namensüberschneidung bekommt. Folgendes wäre nämlich fatal:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double Preis;

public:
 Auto(double Preis) : Preis(Preis) { } // Selbstinitialisierung!
};
</code></pre>
</blockquote>
<p>Ne, das ist vollkommen OK so. Ich verwende das staendig. (bis auf dass ich Variablen immer klein schreibe)</p>
</blockquote>
<p>Aber spätestens bei einer Setter-Funktion wird es dann zum Problem:</p>
<pre><code class="language-cpp">void setX(int x) { x = x; }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1961845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961845</guid><dc:creator><![CDATA[vvvvvvvv]]></dc:creator><pubDate>Tue, 05 Oct 2010 19:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 19:49:16 GMT]]></title><description><![CDATA[<p>vvvvvvvv schrieb:</p>
<blockquote>
<p>Aber spätestens bei einer Setter-Funktion wird es dann zum Problem:</p>
<pre><code class="language-cpp">void setX(int x) { x = x; }
</code></pre>
</blockquote>
<pre><code class="language-cpp">void setX(int x) { this-&gt;x = x; }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1961855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961855</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 05 Oct 2010 19:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Tue, 05 Oct 2010 21:01:31 GMT]]></title><description><![CDATA[<p>Ich bezweifle, dass sich ein Totschlagargument für oder gegen Präfixe wie &quot;m&quot;, &quot;my&quot; oder &quot;m_&quot; bei Membervariablen finden lässt. Persönlich benutze ich &quot;my&quot;.</p>
<p>Allgemein zu Namenskonventionen: Wenn du nur für dich programmierst, such dir eine aus. Das Wesentliche ist, einheitlich zu bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961873</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 05 Oct 2010 21:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 07:15:14 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>vvvvvvvv schrieb:</p>
<blockquote>
<p>In diesem Fall ist das m als Präfix sinnvoll, weil man so keine Namensüberschneidung bekommt. Folgendes wäre nämlich fatal:</p>
<pre><code class="language-cpp">class Auto
{
private:
 double Preis;

public:
 Auto(double Preis) : Preis(Preis) { } // Selbstinitialisierung!
};
</code></pre>
</blockquote>
<p>Ne, das ist vollkommen OK so. Ich verwende das staendig. (bis auf dass ich Variablen immer klein schreibe)</p>
</blockquote>
<p>Und was würde passieren wenn es eine Klasse Preis gibt?</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961935</guid><dc:creator><![CDATA[InitListe]]></dc:creator><pubDate>Wed, 06 Oct 2010 07:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 08:03:29 GMT]]></title><description><![CDATA[<p>InitListe schrieb:</p>
<blockquote>
<p>Und was würde passieren wenn es eine Klasse Preis gibt?</p>
</blockquote>
<p>Wie wäre es mit ausprobieren? Lässt sich nicht kompilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961951</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 06 Oct 2010 08:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 08:40:40 GMT]]></title><description><![CDATA[<blockquote>
<p>Polymorphie lässt grüßen</p>
</blockquote>
<p>Namenskonventionen haben nix mit Polymorphie zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961977</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 06 Oct 2010 08:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 17:52:00 GMT]]></title><description><![CDATA[<p>Jockelx schrieb:</p>
<blockquote>
<p>Wie wäre es mit ausprobieren? Lässt sich nicht kompilieren.</p>
</blockquote>
<p>Wie wäre es mit <em>richtig</em> ausprobieren?</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Namenskonventionen haben nix mit Polymorphie zu tun.</p>
</blockquote>
<p>Einheitliche Namen hingegen schon. Darauf basiert die ganze Funktionsüberladung oder das Duck-Typing bei Templates. ADL ist ein weiteres Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962242</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 06 Oct 2010 17:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 18:05:39 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich bezweifle, dass sich ein Totschlagargument für oder gegen Präfixe wie &quot;m&quot;, &quot;my&quot; oder &quot;m_&quot; bei Membervariablen finden lässt.</p>
</blockquote>
<p>Sehe ich auch so in C++. Wobei wir evtl eine Renaissance des m_ erleben werden. Wegen der Properties in C# und C++/CLI.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Persönlich benutze ich &quot;my&quot;.</p>
</blockquote>
<p>Da ist kritisch anzumerken, daß my in der Literatur eigentlich nur bei Anfängeranfängerbüchern genommen wird. Hier kennen wir Dich. Aber ein Fremder wird dich vielleicht schnell in eine Schublade stecken wollen, wo Du seit Jahren nicht mehr hereinpaßt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962251</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 06 Oct 2010 18:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 18:24:12 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Da ist kritisch anzumerken, daß my in der Literatur eigentlich nur bei Anfängeranfängerbüchern genommen wird.</p>
</blockquote>
<p>Wirklich? Das wäre mir weder aufgefallen noch habe ich davon gehört. &quot;CKlasse&quot; und so, okay. Aber &quot;my&quot; als Präfix? Allerdings muss ich sagen, dass ich wohl zu wenig Anfängerbücher kenne, um das gut beurteilen zu können. Danke jedenfalls für den Hinweis.</p>
<p>Ich könnte mir auch &quot;m&quot; überlegen. &quot;m_&quot; geht nicht, weil ich ausser bei Makros keine Unterstriche verwende und das komisch aussieht. Oder gar nichts? Wobei mir der Gedanke nicht gefällt, auf <code>this-&gt;</code> zurückgreifen zu müssen und vielleicht deswegen sogar fehlerhaften Code zu kompilieren. Nachgestelltes &quot;_&quot;? Kommt mir auch etwas merkwürdig vor. Vorerst werde ich wohl bei &quot;my&quot; bleiben. Ich mache mir ohnehin schon Feinde mit grossgeschriebenen Funktionsnamen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Etwas Gutes hat es wenigstens: Die Member-Präfixe sind ziemlich gut zu refactoren. Als ich vor einiger Zeit meine Namenskonvention für Variablen auf Kleinschreibung umgestellt habe, hatte ich etwa dreihundert Mal länger, alle anderen Stellen im Projekt zu finden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>volkard schrieb:</p>
<blockquote>
<p>Hier kennen wir Dich. Aber ein Fremder wird dich vielleicht schnell in eine Schublade stecken wollen, wo Du seit Jahren nicht mehr hereinpaßt.</p>
</blockquote>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962258</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 06 Oct 2010 18:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 19:19:34 GMT]]></title><description><![CDATA[<p>Nexus: Ich hab meine Attributsnamen ohne Schnickschnack. Wenn ich mal nen Parameter mit demselben Namen hab, bekommt <em>der</em> nen Unterstrich angehängt. Find ich schön, weil man den Parameter nur genau einmal braucht, nämlich zum Setzen des Attributs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962288</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 06 Oct 2010 19:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 19:31:50 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Da ist kritisch anzumerken, daß my in der Literatur eigentlich nur bei Anfängeranfängerbüchern genommen wird.</p>
</blockquote>
<p>Wirklich? Das wäre mir weder aufgefallen noch habe ich davon gehört. &quot;CKlasse&quot; und so, okay. Aber &quot;my&quot; als Präfix? Allerdings muss ich sagen, dass ich wohl zu wenig Anfängerbücher kenne, um das gut beurteilen zu können. Danke jedenfalls für den Hinweis.</p>
</blockquote>
<p>Und was hälst Du von<br />
&quot;mein&quot; als Präfix?</p>
<pre><code class="language-cpp">class Person
{
   int meinAlter;
   int meineGroesse;
   ...
}
</code></pre>
<p>Zucken Dir jetzt die Lachmuskeln?<br />
Gib es zu, die Mundwinkel sind zuerst hochgerutscht beim Lesen, dann runter beim Erkennen, und dieser Satz läßt sie wieder hochrutschen, weil ich so frech bin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962290</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 06 Oct 2010 19:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 19:47:18 GMT]]></title><description><![CDATA[<p>Also <code>my_</code> meide ich wie der Teufel das Weihwasser. Aber nicht nur weil es, genau wie <code>m_</code> , in Anfängerbüchern vorkommt, sondern weil ich beruflich auch viel mit Perl zu tun habe, und da ist <code>my</code> das Schlüsselwort um eine Variable zu definieren.</p>
<p>Generell empfinde ich nicht nur <code>m_</code> sondern auch alle Anderen Präfixe als hässlich, wenn sie einen Unterstrich voraussetzen.</p>
<p>Ich bevorzuge sprechende Namen, bei Funktionen und Variablen; Das erste Wort klein, folgende Groß.<br />
Bei Definitionen wie Klassen, Structs und Templates das erste Wort auch groß. Hier allerdings mit C, S oder T als Präfix. (Denn da eignen sie sich hervorragend um klare Unterscheidungen zu erhalten.)</p>
<p>Für Funktionsparameter habe ich mal die Vorgabe aus den Programmierrichtlinien eines früheren Arbeitgebers übernommen. Dort wurden alle Argumente mit einem kleinen a (wie &quot;Argument&quot;) begonnen, und Übernahmen von Argumenten mit einem kleinen x (wie &quot;eXtended&quot;). Das finde ich zwar nicht sonderlich hübsch, es ist aber ganz praktisch.</p>
<p>Der obige Code würde bei mir damit in etwa so aussehen:</p>
<pre><code class="language-cpp">class CAuto
{
private:
  double preis;

public:
  CAuto(double aPreis) : preis(aPreis) { }
  void setPreis (double aPreis)
    {
      double xPreis = normalizeLumpSum(aPreis);
      preis = xPreis;
    }
};
</code></pre>
<p>Achja: Und wie man sieht verwende ich den GNU-Stil in leicht abgewandelter Form, der kommt auch noch von besagten Richtlinien.</p>
<p>Unterm Strich ist es keine echte Stil- sondern nur Geschmacksfrage. Als schlechten Stil würde ich es nur empfinden, wenn Notationen und Stile in einem Projekt gemischt sind. (Aber zumindest für den Stil gibts ja astyle. ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962294</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Wed, 06 Oct 2010 19:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 20:02:17 GMT]]></title><description><![CDATA[<p>@ volkard: Deutsche Bezeichner wähle ich grundsätzlich nicht. Und ja, deine Posts sind ab und zu recht amüsant <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Ich bevorzuge sprechende Namen, bei Funktionen und Variablen; Das erste Wort klein, folgende Groß.</p>
</blockquote>
<p>Bis hier dachte ich: Ah, ein typischer Anti-UNler, der mehr Wert auf semantische als formale Aussagekraft legt.</p>
<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Bei Definitionen wie Klassen, Structs und Templates das erste Wort auch groß. Hier allerdings mit C, S oder T als Präfix. (Denn da eignen sie sich hervorragend um klare Unterscheidungen zu erhalten.)</p>
</blockquote>
<p>Hier musste ich die Schublade dann doch wieder wechseln. Um mal einige Dinge kritisch zu hinterfragen und dich zum Nachdenken anzuregen:</p>
<ul>
<li>Warum die Unterscheidung zwischen <code>struct</code> und <code>class</code> ? Ich habe das Gefühl, du orientierst dich zu stark an Schlüsselwörtern.</li>
<li>Wäre nicht z.B. auch ein I für Interface angebracht? Das ist oft nämlich weiter von statusbehafteten <code>class</code> -Klassen entfernt als eine Struktur.</li>
<li>Warum T für Templates? Templates sind an den spitzen Klammern eindeutig zu erkennen.</li>
<li>Wie unterscheidest du <code>struct</code> und <code>class</code> , wenn es sich um Templates handelt?</li>
<li>Was machst du mit Typedefs?</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1962300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962300</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 06 Oct 2010 20:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 20:09:13 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>knivil schrieb:</p>
<blockquote>
<p>Namenskonventionen haben nix mit Polymorphie zu tun.</p>
</blockquote>
<p>Einheitliche Namen hingegen schon. Darauf basiert die ganze Funktionsüberladung oder das Duck-Typing bei Templates. ADL ist ein weiteres Beispiel.</p>
</blockquote>
<p>Prototyping lässt grüßen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962305</guid><dc:creator><![CDATA[geben Sie einen]]></dc:creator><pubDate>Wed, 06 Oct 2010 20:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 20:35:05 GMT]]></title><description><![CDATA[<p>Meine Antworten in kursiv, okay?</p>
<p>Nexus schrieb:</p>
<blockquote>
<ul>
<li>Warum die Unterscheidung zwischen <code>struct</code> und <code>class</code> ? Ich habe das Gefühl, du orientierst dich zu stark an Schlüsselwörtern.<br />
<em>Es gibt Programme, bei denen ich eine globale Ansammlung von Umgebungswerten (aka Environment) brauche. Das sind meist kleine Programme, die sich im Wesentlichen auf den C-Kern beschränken. Hier benutze ich Structs in der Tat als eben solche, auch wenn struct nur ein Alias für class ist. Die C-Fans in meiner Firma kommen damit außerdem besser klar.</em></li>
<li>Wäre nicht z.B. auch ein I für Interface angebracht? Das ist oft nämlich weiter von statusbehafteten <code>class</code> -Klassen entfernt als eine Struktur.<br />
<em>Interace? Ich verwende manchmal Interface-Klassen, und die haben ein C wie Class.</em></li>
<li>Warum T für Templates? Templates sind an den spitzen Klammern eindeutig zu erkennen.<br />
<em>Weil die Header genauso heißen, aber keine spitzen Klammern haben können.</em></li>
<li>Wie unterscheidest du <code>struct</code> und <code>class</code> , wenn es sich um Templates handelt?<br />
<em>Nur Klassen-Templates bekommen das T. Entschuldige bitte, die Einschränkung habe ich vergessen zu erwähnen. Templated structs und Funktionen sind Structs und Methoden. Bei Structs verwende ich sie allerdings eh nur für TMP, und da haben sie Funktionscharakter und werden auch so benannt.</em></li>
<li>Was machst du mit Typedefs?<br />
<em>Oh, die hatte ich vergessen. Also Außerhalb geschlossener Strukturen bekommen typedefs einfach sprechende Namen wie andere Typen auch, innerhalb geschlossener Strukturen sinds meist nicht-reservierte Abkürzungen mit einem Unterstrich davor. Ich <strong>weiß</strong>, das ist böse, grausam, und darf man nicht machen. Aber die Angewohnheit ist fast 20 Jahre alt (bei typedefs) und ich kanns mir irgendwie nicht abgewöhnen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></em></li>
</ul>
</blockquote>
<p>Achja: Und ja, ich bin da wirklich _ziemlich_ Schlüsselwort verhaftet, aber ja nicht ausschließlich.</p>
<p>Fast vergessen: Endlich mal jemand, der nachfragt, wenn was komisch klingt. Dankeschön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962320</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Wed, 06 Oct 2010 20:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Wed, 06 Oct 2010 22:15:44 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>Polymorphie lässt grüßen</p>
</blockquote>
<p>Namenskonventionen haben nix mit Polymorphie zu tun.</p>
</blockquote>
<p>An der Stelle habe ich mich wohl ein bisschen ungenau/falsch ausgedrückt.</p>
<p>Ich meinte eher, dass Frameworks einen bestimmten Stil vorschreiben. Wenn man verschiedene Frameworks einsetzt, kommt es zu verschiedenen Schreibweisen innerhalb eines Projektes. Dies fällt bei Vererbung besonders auf. Ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;gtkmm/main.h&gt;
#include &lt;gtkmm/window.h&gt;
#include &lt;gtkmm/button.h&gt;
#include &lt;iostream&gt;

class SpecialButton : public Gtk::Button
{
public:
	bool getState() {return state;};
	void setState(bool state) {this-&gt;state = state;};
protected:
	virtual void on_clicked();
private:
	bool state;
};

void SpecialButton::on_clicked()
{
	std::cout &lt;&lt; &quot;SpecialButton Clicked\t State: &quot; &lt;&lt; state &lt;&lt; std::endl;
	state = !state;
}

int main(int argc, char* argv[])
{
	Gtk::Main kit(argc, argv);

	SpecialButton button;
	button.setState(false);
	button.set_label(&quot;SpecialButton.&quot;);

	Gtk::Window window;
	window.set_title(&quot;Der Titel...&quot;);
	window.set_border_width(10);
	window.add(button);
	window.show_all_children();

	Gtk::Main::run(window);
 return 0;
}
</code></pre>
<p>Wie man sieht schreibe ich meine Methodennamen in der Regel zusammen und fange mit einem kleinen Buchstaben an. Um nun in der neuen Klasse SpecialButton die click-Methode zu überschreiben muss ich <code>on_click</code> schreiben und nicht <code>onClick</code> . Die restlichen Methoden (in diesem Falle Setter und Getter für den State) kann ich wieder in der für mich üblichen Schreibweise schreiben.</p>
<p>P.S.: Ich hoffe man sieht, dass das Beispiel aus der Luft gegriffen ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962350</guid><dc:creator><![CDATA[yacb]]></dc:creator><pubDate>Wed, 06 Oct 2010 22:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Fri, 08 Oct 2010 14:21:09 GMT]]></title><description><![CDATA[<p>Yamakuzure, danke für die Erörterung. Gut, einmal andere Argumente für die UN als &quot;ich hab das mal irgendwo gesehen und finde es noch praktisch&quot; zu hören. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich selbst benutze <code>struct</code> auch für andere Dinge als <code>class</code> – nämlich Datenbündel, Funktoren und Metafunktionen. Allerdings habe ich persönlich bisher nicht die Notwendigkeit verspürt, diese mit &quot;S&quot; oder &quot;C&quot; zu kennzeichnen. Schlimmer wäre es jetzt gewesen, wenn du <code>struct</code> und <code>class</code> nahezu gleich einsetzt, aber die Bezeichner doch trennst (die Schlüsselwörter selbst unterscheiden sich ja nur in der Default-Sichtbarkeit). Das &quot;I&quot; für Interface verwenden gewisse Leute, um neben formalen (Schlüsselwort) auch semantische Fälle von Klassen zu unterscheiden. Ist natürlich auch ein Streitfall, zumal es Zwischenstufen gibt. Um ganz konsequent zu sein, müsste z.B. man auch Enum-Typen speziell präfixen. Zumindest ist die Auswahl von <code>class</code> und <code>struct</code> als sonderbehandelte Typen mehr oder weniger willkürlich (auch wenn diese natürlich einen Grossteil der Fälle ausmachen).</p>
<p>Zu den Klassentemplates: Ich sehe diese mehr als eine Art konfigurierbare Klassen an. Bei vollständiger Angabe der Template-Argumente erzeugst du schliesslich Klassen daraus. Von daher finde ich den semantischen Unterschied nicht derart gross, dass ich zwei verschiedene Präfixe wählen würde. Zum Beispiel kann es gut sein, dass du für eine Klasse plötzlich eine austauschbare Komponente einbaust (z.B. Typ oder Policy), und dann eigentlich unnötigerweise Bezeichner und Dateinamen refactoren musst. Unter Umständen schreibst du sogar ein Typedef für eine häufig benutzte Instanziierung, das dann wie die vorherige Klasse benutzt werden kann. Obwohl sich für den Benutzer dadurch nichts ändert, benötigt er ein anderes Präfix (oder keins mehr), was für Verwirrung sorgen kann.</p>
<p>Ausserdem ist es oft gar nicht relevant, ob es sich um eine Klasse handelt. Bei <code>cout &lt;&lt; 2 * number &lt;&lt; endl;</code> soll das Doppelte von <code>number</code> ausgegeben werden. Ob es sich dabei um <code>double</code> oder <code>MyDouble</code> handelt, ist unwichtig. Wichtig ist, dass der Typ die Multiplikation und Ausgabe unterstützt. Wenn Methoden aufgerufen werden, siehst du ja auch gleich an der Syntax, dass es sich um eine Klasse handelt. Du distanzierst dich halt mit dem &quot;C&quot; in vielen Fällen von anderen Typen, obwohl der tatsächliche Abstand gar nicht so gross ist.</p>
<p>Was ich persönlich am schlimmsten finde: Ungarische Notation zwingt dich in C++ zur Inkonsistenz. Du <em>kannst</em> Klassentypen nicht durchgehend mit &quot;C&quot; präfixen. Spätestens wenn du Abstraktionsmechanismen verwendest, seien das zum Beispiel Typedefs oder Templates, musst du darauf verzichten. Aber das &quot;C&quot; nur manchmal hinzuschreiben – wann genau, ist wiederum kontrovers – entfernt sich vom ursprünglichen Gedanken, Klassentypen schnell im Code zu erkennen und reduziert die tatsächlichen Vorteile dieser Namenskonvention.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962941</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 08 Oct 2010 14:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Sat, 09 Oct 2010 11:42:50 GMT]]></title><description><![CDATA[<p>Ah, da war ich wohl nicht deutlich genug.</p>
<p>Also die Klasse heißt, zum Beispiel &quot;CMeineKlasse&quot;. Aber ob eine <em>Instanz</em> nun &quot;foo&quot;, &quot;bluBB&quot;, oder &quot;CmyFoo&quot; heißt, ist mir wurscht. (Obwohl ich ja schon sagte, dass ich sprechende Namen ohne Präfixe verwende.)</p>
<p>Oder um es auf dein Beispiel zu transponieren: &quot;<em>Ob es sich dabei um <code>double</code> oder</em>* <code>C</code> ** <code>MyDouble</code> handelt, ist unwichtig.*&quot;</p>
<p>Was ich nicht verstehe ist dein letzter Absatz. Wieso ungarische Notation? Einzig ein Missverständnis, ich könnte Variablen anstatt Typen gemeint haben, sei eine mögliche Erklärung. Siehe mein obiges Beispiel über <code>CAuto</code> , Instanzen könnten zum Beispiel heißen &quot; <code>autoA</code> &quot; oder &quot; <code>porscheBlau</code> &quot; oder &quot; <code>gelberFord</code> &quot;. Aber ganz sicher nichts mit irgendeinem Typenpräfix (aka UN) davor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963277</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Sat, 09 Oct 2010 11:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Sat, 09 Oct 2010 11:49:38 GMT]]></title><description><![CDATA[<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Was ich nicht verstehe ist dein letzter Absatz. Wieso ungarische Notation? Einzig ein Missverständnis, ich könnte Variablen anstatt Typen gemeint haben, sei eine mögliche Erklärung.</p>
</blockquote>
<p>Nein, ich hab schon verstanden, dass du Typen meinst. Vielleicht war &quot;UN&quot; zu spezifisch, ich bezog mich auf Präfixe in Abhängigkeit des Typen (oder der Art von Typ wie z.B. <code>class</code> ) im Allgemeinen. Mein letzter Absatz richtet sich gegen das &quot;C&quot; vor Klassen, aber kann so mehr oder weniger verallgemeinert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963278</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 09 Oct 2010 11:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Frage des Stils? on Sat, 09 Oct 2010 13:08:54 GMT]]></title><description><![CDATA[<p>Ich probiere in letzter Zeit auch unterschiedliche Stile aus.<br />
Angefangen habe ich mit dem üblichen UpperCamelCase für Klassennamen, lowerCamelCase für Variablen- und Methodennamen und keinerlei Prä- oder Suffix für Klassenattribute - dafür aber Getter und Setter der Form getXX und setXX.</p>
<p>Inzwischen habe ich mich an die von mir verwendeten Bibliotheken angepasst (also boost, Standardbibliothek, etc.) und verwende generell Unterstriche zur Unterteilung der Klassennamen und sonst nur Kleinbuchstaben (außer in Makros). Dazu haben Getter und Setter bei mir jetzt den gleichen Namen und sind entsprechend überladen. Das macht es natürlich nötig die Klassenattribute anders zu bennenen, weswegen ich, nachdem ich für kurze Zeit mit dem unleserlichen _ Suffix gearbeitet habe (ptr_-&gt;(), sieht grässlich aus), zum m_ Präfix übergegangen bin.</p>
<p>Momentan bin ich ganz zufrieden mit der Lösung, da es sich gut in STL, etc. einfügt und auch angenehm zu lesen ist (mMn). Gleichzeitig denke ich mir so häufiger gute Namen aus, da man ja doch nicht <em>so</em> viele Unterstriche haben möchte.<br />
Die STL hat ja auch kein &quot;dynamic_array&quot; sondern einfach nur &quot;vector&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Alles was nur in die Nähe von Microsofts Ungarischer Notation (im Gegensatz zur echten UN) geht, vermeide ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963296</guid><dc:creator><![CDATA[beenzy]]></dc:creator><pubDate>Sat, 09 Oct 2010 13:08:54 GMT</pubDate></item></channel></rss>