<?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[Stil, typedef]]></title><description><![CDATA[<p>Hallo, eine Stilfrage:</p>
<p>Eine Library stellt eine Datenstruktur zur Verfügung. Für Programme, die diese<br />
Library verwenden, ist es typisch, daß diese in Schleifen mit der Datenstruktur<br />
kommunizieren und dabei Indizes verwenden. Nun scheint es mir aus Gründen der<br />
Lesbarkeit gut, den verschiedenen Typen von Indices über typedef einen Namen<br />
zu geben, also etwa</p>
<p>typedef int elementIdx;<br />
typedef int subElementIdx;</p>
<p>Findet Ihr das sinnvoll oder gibts ein Argument, das zu lassen? Was ist dafür<br />
ein sinnvoller Coding-Standard? elmementIdx, ElementIdx, ElementIdxType...?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282618/stil-typedef</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 01:41:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282618.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Feb 2011 09:21:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:21:56 GMT]]></title><description><![CDATA[<p>Hallo, eine Stilfrage:</p>
<p>Eine Library stellt eine Datenstruktur zur Verfügung. Für Programme, die diese<br />
Library verwenden, ist es typisch, daß diese in Schleifen mit der Datenstruktur<br />
kommunizieren und dabei Indizes verwenden. Nun scheint es mir aus Gründen der<br />
Lesbarkeit gut, den verschiedenen Typen von Indices über typedef einen Namen<br />
zu geben, also etwa</p>
<p>typedef int elementIdx;<br />
typedef int subElementIdx;</p>
<p>Findet Ihr das sinnvoll oder gibts ein Argument, das zu lassen? Was ist dafür<br />
ein sinnvoller Coding-Standard? elmementIdx, ElementIdx, ElementIdxType...?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025147</guid><dc:creator><![CDATA[cp]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:26:48 GMT]]></title><description><![CDATA[<p>Was ist dadurch gewonnen? Es gibt keine zusätzlichen Typ-Überprüfungen, weil du ja den Quellcode der Bibliothek nicht verändern kannst, nehme ich mal an.<br />
Ich finde, das ist ein klassischer Fall von &quot;Wähle vernünftige Variablennamen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025149</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:28:56 GMT]]></title><description><![CDATA[<p>Probier es aus! Benutze Deinen Trick und benutze ihn gründlich. Sowas muß man selber durchleben, ganz ehrlich.<br />
Wenn Du Dir nicht daran die Hörner gründlich abstößt, wirst Du jahrelang mit solcherlei Gedanken schwanger gehen.<br />
Siehe auch die Diskussion über die Ungarische Notation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025150</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:46:32 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Was ist dadurch gewonnen? Es gibt keine zusätzlichen Typ-Überprüfungen, weil du ja den Quellcode der Bibliothek nicht verändern kannst, nehme ich mal an.<br />
Ich finde, das ist ein klassischer Fall von &quot;Wähle vernünftige Variablennamen&quot;.</p>
</blockquote>
<p>Nein, das war unklar ausgedrückt. Ich schreibe die Library und möchte in der API diese typedefs unterbringen, damit der User-Code nicht so aussieht:</p>
<pre><code class="language-cpp">for(int i=
{
  for(int j=
..
</code></pre>
<p>sondern</p>
<pre><code class="language-cpp">for(elementIdx i=
{
  for(subElementIdx j=
..
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2025157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025157</guid><dc:creator><![CDATA[cp]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:53:45 GMT]]></title><description><![CDATA[<p>cp schrieb:</p>
<blockquote>
<p>Decimad schrieb:</p>
<blockquote>
<p>Was ist dadurch gewonnen? Es gibt keine zusätzlichen Typ-Überprüfungen, weil du ja den Quellcode der Bibliothek nicht verändern kannst, nehme ich mal an.<br />
Ich finde, das ist ein klassischer Fall von &quot;Wähle vernünftige Variablennamen&quot;.</p>
</blockquote>
<p>Nein, das war unklar ausgedrückt. Ich schreibe die Library und möchte in der API diese typedefs unterbringen, damit der User-Code nicht so aussieht:</p>
<pre><code class="language-cpp">for(int i=
{
  for(int j=
..
</code></pre>
<p>sondern</p>
<pre><code class="language-cpp">for(elementIdx i=
{
  for(subElementIdx j=
..
</code></pre>
</blockquote>
<p>Und wie wär:</p>
<pre><code class="language-cpp">for( int element = 0; ... )
    for( int subelement = 0; ... ) {
        // ...
    }
}
</code></pre>
<p>?</p>
<p>Du endest ansonsten in deinen Bibliotheken mit 5000 Namen für ganzzahlige Indizes, die aber alle fröhlich ineinander konvertierbar sind, also nichts im Sinne von Sicherheit bringen. Zudem muss der Benutzer anhand der Signaturen der Funktionen immer nachschlagen, was genau da nun eigentlich gemeint ist.<br />
Aber Volkard hat schon Recht, probier es einfach mal aus <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/2025159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025159</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:52:15 GMT]]></title><description><![CDATA[<p>Wenn man aus irgend einem Grund nicht size_t als Index-Typ verwenden kann/will, dann finde ich nix dabei <em>einen</em> eigenen Typ per Typedef zu definieren.</p>
<pre><code class="language-cpp">namespace Foo
{
typedef int IndexType;
}
</code></pre>
<p>Einen eigenen Typedef für jede &quot;Art&quot; von Index zu machen, wenn im Endeffekt eh alle auf den selben Typ aufgelöst werden halte ich nicht für sinnvoll.</p>
<p>Und wie man den Typedef nennen sollte hängt natürlich davon ab was für naming Conventions man verwendet. In der Standard-Library wird xxx_t verwendet, also dann vielleicht index_t. In Projekten die CamelCase verwenden dann vermutlich IndexT oder IndexType oder für ganz verwegene auch bloss Index.<br />
Manche APIs/Libraries verwenden für Typedefs auch ausschliesslich Grossbuchstaben, also dann INDEX.</p>
<p>Wenn möglich würde ich allerdings einfach size_t verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025161</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:52:15 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 09:59:32 GMT]]></title><description><![CDATA[<p>Bei Indizes stimme ich meinen Vorgängern zu - das sind eigentlich immer Ganzzahlen und das braucht man auch nicht zu maskieren, wenn man davon ausgeht, dass sich nichts grundlegendes am Indextyp ändert.</p>
<p>Anders siehts meiner Meinung nach bei IDs aus. Ich hab mal ein Framework geschrieben, bei dem verschiedene Entitäten (d.h. Klassen) mit IDs angesprochen wurden. Da gabs dann eine RuleID, CheckpointID usw.<br />
In meinem Fall waren das simple std::string, da das Framework aber noch weiterentwickelt werden sollte, hab ich tatsächlich mehrmals typedef std::string XyzID geschrieben - so dass bei Bedarf später z.B. long oder andere Dinge als ID benutzt werden können.</p>
<p>Die frage &quot;typedeffe ich einen simplen Datentyp?&quot; ist also nicht pauschal zu beantworten sondern situationsabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025163</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 23 Feb 2011 09:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 10:04:47 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Und wie wär:</p>
<pre><code class="language-cpp">for( int element = 0; ... )
    for( int subelement = 0; ... ) {
        // ...
    }
}
?
</code></pre>
</blockquote>
<p>Auch gut, aber sinnvolle Variablennamen sind Sache des Users, während hier das<br />
Design der Library überdacht wird. Ich glaube, der User hat es leichter, wenn<br />
die Methoden der Datenstruktur Argumente haben, deren Typ nicht 'int', sondern<br />
'elementIdx' oder 'subElementIdx' ist.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025167</guid><dc:creator><![CDATA[cp]]></dc:creator><pubDate>Wed, 23 Feb 2011 10:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 10:08:23 GMT]]></title><description><![CDATA[<p>Probier's aus!<br />
(Ich als jemand, der sich die typedefs dann auch mal anschaut, würde dann aber dazu übergehen, statt deinen typedefs eben unsigned int oder sowas zu benutzen^^)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025173</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Feb 2011 10:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 10:14:43 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Bei Indizes stimme ich meinen Vorgängern zu - das sind eigentlich immer Ganzzahlen und das braucht man auch nicht zu maskieren, wenn man davon ausgeht, dass sich nichts grundlegendes am Indextyp ändert.</p>
<p>Anders siehts meiner Meinung nach bei IDs aus. Ich hab mal ein Framework geschrieben, bei dem verschiedene Entitäten (d.h. Klassen) mit IDs angesprochen wurden. Da gabs dann eine RuleID, CheckpointID usw.<br />
In meinem Fall waren das simple std::string, da das Framework aber noch weiterentwickelt werden sollte, hab ich tatsächlich mehrmals typedef std::string XyzID geschrieben - so dass bei Bedarf später z.B. long oder andere Dinge als ID benutzt werden können.</p>
<p>Die frage &quot;typedeffe ich einen simplen Datentyp?&quot; ist also nicht pauschal zu beantworten sondern situationsabhängig.</p>
</blockquote>
<p>Also ich würde deine ID's jetzt so ungefähr auch als Handles verstehen - und da macht es ja durchaus Sinn, das zu typedef'en, weil man ja evtl. mal auf Hashes umsteigen möchte oder sowas. Voll einverstanden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025178</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Feb 2011 10:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 10:18:29 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">for( int element = 0; ... ;
</code></pre>
</blockquote>
<p>Wenn ich doch bloß wüßte, was in mit den ... gemeint ist.</p>
<p>Eigentlich müßte man auf ranged for loops warten oder an sowas</p>
<pre><code class="language-cpp">for( decltype(...) element = 0; ... ;
</code></pre>
<p>denken.</p>
<p>Und den typedef lokal machen.</p>
<pre><code class="language-cpp">typedef decltype(...) ElementIndexType;
for( ElementIndexType element = 0; ... ;
</code></pre>
<p>aua, ach nee, das ist ja übel.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> auto</p>
<pre><code class="language-cpp">for( auto element = 0; ... ;
</code></pre>
<p>So, Problem ist weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025183</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 23 Feb 2011 10:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Stil, typedef on Wed, 23 Feb 2011 10:25:40 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Machst du gerade Scherze?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025186</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 Feb 2011 10:25:40 GMT</pubDate></item></channel></rss>