<?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[Predeklaration mit namespace - Stilfrage]]></title><description><![CDATA[<p>Grüsse zusammen,</p>
<p>Ich bin mal wieder dabei meinen Programmierstil weiterzuentwickeln, vor allem wegen ein paar guten Argumenten von Shade Of Mine in einem anderen Thread. Ich glaube ich habe es nun endlich geschafft das C aus den Klassen wegzubekommen und sogar fast alle Prefixe, bis auf m_ (member) und g_ (global).</p>
<p>In diesem Zusammenhang habe ich mir auch sonst ein wenig meinen Code angeschaut und habe eine meiner Meinung nach momentan ziemlich hässliche Sache entdeckt und würde mal gerne nachfragen, wie ihr das macht.</p>
<p>Es geht um Predeklarationen von Klassen in mehrfachen namespaces. Momentan sieht das bei mir so aus:</p>
<pre><code class="language-cpp">////////////////////////////////////////////////////////
// Predeclaration

namespace xxx {

  class Z;

namespace yyy {
namespace zzz {

  class A;
  class B;
  class C;

} // zzz
} // yyy
} // xxx

namespace aaa {
namespace bbb {

  /* ... usw. ... */

} // bbb
} // aaa

// Und irgendwann kommt dann noch der namespace der eigentlichen Klasse und die Klasse selbst.
</code></pre>
<p>Das sieht irgendwie einfach nur hässlich aus.</p>
<p>Wie macht ihr solche Predeklarationen?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220138/predeklaration-mit-namespace-stilfrage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220138.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Aug 2008 11:49:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Tue, 12 Aug 2008 11:49:43 GMT]]></title><description><![CDATA[<p>Grüsse zusammen,</p>
<p>Ich bin mal wieder dabei meinen Programmierstil weiterzuentwickeln, vor allem wegen ein paar guten Argumenten von Shade Of Mine in einem anderen Thread. Ich glaube ich habe es nun endlich geschafft das C aus den Klassen wegzubekommen und sogar fast alle Prefixe, bis auf m_ (member) und g_ (global).</p>
<p>In diesem Zusammenhang habe ich mir auch sonst ein wenig meinen Code angeschaut und habe eine meiner Meinung nach momentan ziemlich hässliche Sache entdeckt und würde mal gerne nachfragen, wie ihr das macht.</p>
<p>Es geht um Predeklarationen von Klassen in mehrfachen namespaces. Momentan sieht das bei mir so aus:</p>
<pre><code class="language-cpp">////////////////////////////////////////////////////////
// Predeclaration

namespace xxx {

  class Z;

namespace yyy {
namespace zzz {

  class A;
  class B;
  class C;

} // zzz
} // yyy
} // xxx

namespace aaa {
namespace bbb {

  /* ... usw. ... */

} // bbb
} // aaa

// Und irgendwann kommt dann noch der namespace der eigentlichen Klasse und die Klasse selbst.
</code></pre>
<p>Das sieht irgendwie einfach nur hässlich aus.</p>
<p>Wie macht ihr solche Predeklarationen?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563280</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 12 Aug 2008 11:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Tue, 12 Aug 2008 12:09:20 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Das sieht irgendwie einfach nur hässlich aus.</p>
<p>Wie macht ihr solche Predeklarationen?</p>
</blockquote>
<p>Ähnlich, nur das ich wie bei jeden Scope einrücke. Die Kommentare bei den schließenden Namensräumen schenke ich mir, da diese eh durch die Einrückung selbsterklärend sind sind.</p>
<pre><code class="language-cpp">namespace xxx {
  class Z;

  namespace yyy {
    namespace zzz {
      class A;
      class B;
      class C;
    }
  }
}

namespace aaa {
  namespace bbb {
    // ... usw. ...
  }
}
</code></pre>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563288</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 12 Aug 2008 12:09:20 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Tue, 12 Aug 2008 14:48:24 GMT]]></title><description><![CDATA[<p>Ich finde die Kommentare beim Namensbereich-Ende wichtig, ich „kollabiere“ sie aber, d.h. bei mir würde das dann so aussehen:</p>
<pre><code class="language-cpp">} } } // namespace xxx::yyy::zzz
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1563436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563436</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 12 Aug 2008 14:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 00:52:41 GMT]]></title><description><![CDATA[<p>Danke ihr zwei.<br />
Die Einrückungen wären zwar ganz schön, aber ich mache auch keine Einrückungen bei der Definition oder Deklaration. Das wäre ein Bruch. Ich könnte natürlich das andere anpassen, aber dann geht einem wertvoller Platz in der Breite verloren. Ich setze selber die Grenze bei 120 Zeichen fest, bereits mehr als die standardmässigen 80, aber habe auch so schon oft zu wenig Platz. Möchte da nicht noch mehr expandieren. Zudem viel schöner sieht es nicht aus ^^</p>
<p>Das mit dem kollabieren wäre noch eine Idee, damit es zumindest etwas kompakter aber trotzdem übersichtlich ist. Aber irgendwie immer noch nicht das Wahre. Nur was bleibt einem viel anderes übrig?</p>
<p>Hat sonst noch jemand eine Idee, bzw. macht es komplett anders?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563710</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 Aug 2008 00:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 05:26:42 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Das mit dem kollabieren wäre noch eine Idee, damit es zumindest etwas kompakter aber trotzdem übersichtlich ist. Aber irgendwie immer noch nicht das Wahre. Nur was bleibt einem viel anderes übrig?</p>
</blockquote>
<p>Das kollabieren verwende ich selbst auch bei der eigentlichen Deklaration (s.u.). In sofern hast du recht mit der Breite. Doch ohne Einrückungen gehen meines Erachtens Informationen verloren. Anderseits habe ich dennoch keine Probleme mit der Breite (verwende selbst 82 als Breite) da ich trotz Schachtelungen auch Parameter umbreche etc:</p>
<pre><code class="language-cpp">// Vorwärtsdeklarationen wie oben
//...
// Nun eigentliches Element:
namespace Firmenname { namespace Bereich { namespace Unterbereich {

    class XYZ
    {
        public:
            XYZ();
            XYZ(                  // Ich habe mir inzwischen angewöhnt Parameter in jeweils
                XYZ const &amp; rhs); // eigene Zeilen zu setzen, daher kein Breitenproblem ;)
            XYZ&amp; operator=(
                XYZ const &amp; rhs);
            ~XYZ();
    };

}}}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1563722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563722</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 13 Aug 2008 05:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 10:33:08 GMT]]></title><description><![CDATA[<p>Hmmm, ok, ich könnte natürlich auch eine eigene Zeile für Rückgabewert und co verwenden:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void
set(std::string const&amp; field,
    std::string const&amp; value)
{
  /* ... */
}
</code></pre>
<p>Die parameter umbrechen tue ich auch, aber da gibt es manchmal auch Probleme:</p>
<pre><code class="language-cpp">void ein_längerer_funktionsname(aaa::bbb::cccc::KlassenName::EnumName wert);
</code></pre>
<p>Das sind bereits 76 Zeichen. Ist allerdings auch eher selten. Vielleicht sollte ich es auch ein wenig mit den Namespaces lassen, bzw. weniger verwenden.</p>
<p>Verwendet ihr eigentlich namespaces für die eigenen Klassen, wenn ihr eine executable entwickelt? Also keine Bibliothek?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563884</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 Aug 2008 10:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 11:47:49 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Das sind bereits 76 Zeichen. Ist allerdings auch eher selten. Vielleicht sollte ich es auch ein wenig mit den Namespaces lassen, bzw. weniger verwenden.</p>
<p>Verwendet ihr eigentlich namespaces für die eigenen Klassen, wenn ihr eine executable entwickelt? Also keine Bibliothek?</p>
</blockquote>
<p>Man kann es mit Namensräumen auch übertreiben, aber verwenden tue ich diese schon. In der Regel begrenze ich mich dabei aber auf höchstens 3, im absoluten Extrem auf 4 Ebenen.</p>
<p>Beispielaufbau: &lt;Firma/Projekt&gt;::&lt;Modul&gt;::&lt;Layer&gt;::&lt;Technologie&gt;</p>
<p>z.B:</p>
<pre><code>Simerion::Calendar::UI
 Simerion::Calendar::DL::Oracle
</code></pre>
<p>Bei allgemeineren Klassen/Funktionen auch mal nur 1 oder 2 Schachtelungen (Bei mir aber immer mindestens das Projekt).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563944</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 13 Aug 2008 11:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 12:15:02 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Beispielaufbau: &lt;Firma/Projekt&gt;::&lt;Modul&gt;::&lt;Layer&gt;::&lt;Technologie&gt;</p>
</blockquote>
<p>Jo, so mache ich das eigentlich im allgemeinen auch:</p>
<pre><code>// Zum Beispiel:
dsi::net::http

// dsi: Dracopien Software Industries
// net: Netzwerk/Internet
// http: HTTP-Layer

// Gibt dann auch:
dsi::net::ftp
dsi::net::irc
// usw.

// oder:
dsi::xml  // eXtended Markup Language
dsi::bdl  // Binary Data Language
dsi::util // Utilities
</code></pre>
<p>asc schrieb:</p>
<blockquote>
<p>Bei allgemeineren Klassen/Funktionen auch mal nur 1 oder 2 Schachtelungen (Bei mir aber immer mindestens das Projekt).</p>
</blockquote>
<p>Also auch bei auführbaren Projekten, wo die Klassen grundsätzlich nicht anderswo verwendet werden?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563972</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 13 Aug 2008 12:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to Predeklaration mit namespace - Stilfrage on Wed, 13 Aug 2008 12:44:32 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Bei allgemeineren Klassen/Funktionen auch mal nur 1 oder 2 Schachtelungen (Bei mir aber immer mindestens das Projekt).</p>
</blockquote>
<p>Also auch bei auführbaren Projekten, wo die Klassen grundsätzlich nicht anderswo verwendet werden?</p>
</blockquote>
<p>Ich verwende privat immer und ohne Ausnahme (Abgesehen von int main() oder einer vergleichbaren Startroutine) mindestens den untersten Namensraum. Etwas das man immer einheitlich macht, vergisst man wenn es darauf ankommt nicht. Ich habe zwar in meinen Programmierstil auch die ein oder andere kleine Ausnahme, ich versuche aber grundsätzlich die Anzahl der Ausnahmen gegen 0 tendieren zu lassen (Beispielweise mache ich die öffnende Klammer im Regelfall in eine eigene Zeile, bei Funktionen die Einzeiler sind, mache ich die Ausnahme und die öffnende geschweifte Klammer steht in diesen Fall tatsächlich hinter dem Ende der Parameterliste).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1564016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1564016</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 13 Aug 2008 12:44:32 GMT</pubDate></item></channel></rss>