<?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[Probleme mit C++]]></title><description><![CDATA[<p>Hallo Forumgemeinschaft,</p>
<p>mir fällt auf, dass ich - seit ich C++ ein wenig besser kenne - triviale Dinge unglaublich kompliziert und durchdacht löse, sodass ich viel zu viel Zeit für Unwesentliches investiere. Beispielsweise habe ich letztens Tage investiert für eine einfache Color-Klasse. Ihre Vorzüge:<br />
- Für nichts Speicher bezahlen was man auch nicht braucht (wenn jemand 5 Bit pro RGB-Komponente will bekommt er es (in 16 Bytes)), ebenso für den Alpha-Kanal<br />
- Typen der Komponenten frei wählbar<br />
- Überladung der Container für Farben mit &lt;8 Bits (z.B. Monochrom) damit man weniger Speicher braucht<br />
- Traits für den Wertbereich der Komponenten, sodass man auch float-Farben haben kann, deren Wertebereich -1..3,972 ist<br />
- Implizite Konvertierbarkeit zwischen verschiedenen Typen / Traits<br />
- Verschiedene Modelle, sodass man nicht immer zwischen HSV/RGB umrechnen muss sondern sie wahlweise auch dauerhaft so speichern kann.</p>
<p>Heute als ich die Klasse dann anwenden wollte hab ich sie aus Frust weggeworfen und stattdessen einfach ein struct mit 4 uc's genommen...</p>
<p>Wenn ich etwas neues zu programmieren beginne, dann durchdenke ich mir unglaublich lang das Design, solange bis mir kein einziger Fall mehr einfällt, in welchem das Design nicht optimal ist. Das endet meistens in Konstrukten mit 5 oder mehr Template-Parametern und xy Helferklassen.</p>
<p>Geht / ging es sonst noch jemandem so? Wie kommt man davon wieder los? Ich will doch nur flexiblen Code schreiben...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327098/probleme-mit-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:23:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327098.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jul 2014 14:16:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit C++ on Wed, 23 Jul 2014 14:16:13 GMT]]></title><description><![CDATA[<p>Hallo Forumgemeinschaft,</p>
<p>mir fällt auf, dass ich - seit ich C++ ein wenig besser kenne - triviale Dinge unglaublich kompliziert und durchdacht löse, sodass ich viel zu viel Zeit für Unwesentliches investiere. Beispielsweise habe ich letztens Tage investiert für eine einfache Color-Klasse. Ihre Vorzüge:<br />
- Für nichts Speicher bezahlen was man auch nicht braucht (wenn jemand 5 Bit pro RGB-Komponente will bekommt er es (in 16 Bytes)), ebenso für den Alpha-Kanal<br />
- Typen der Komponenten frei wählbar<br />
- Überladung der Container für Farben mit &lt;8 Bits (z.B. Monochrom) damit man weniger Speicher braucht<br />
- Traits für den Wertbereich der Komponenten, sodass man auch float-Farben haben kann, deren Wertebereich -1..3,972 ist<br />
- Implizite Konvertierbarkeit zwischen verschiedenen Typen / Traits<br />
- Verschiedene Modelle, sodass man nicht immer zwischen HSV/RGB umrechnen muss sondern sie wahlweise auch dauerhaft so speichern kann.</p>
<p>Heute als ich die Klasse dann anwenden wollte hab ich sie aus Frust weggeworfen und stattdessen einfach ein struct mit 4 uc's genommen...</p>
<p>Wenn ich etwas neues zu programmieren beginne, dann durchdenke ich mir unglaublich lang das Design, solange bis mir kein einziger Fall mehr einfällt, in welchem das Design nicht optimal ist. Das endet meistens in Konstrukten mit 5 oder mehr Template-Parametern und xy Helferklassen.</p>
<p>Geht / ging es sonst noch jemandem so? Wie kommt man davon wieder los? Ich will doch nur flexiblen Code schreiben...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410100</guid><dc:creator><![CDATA[FirstWorldProblems]]></dc:creator><pubDate>Wed, 23 Jul 2014 14:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit C++ on Wed, 23 Jul 2014 14:21:43 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ja, so in die Richtung denkend erwische ich mich auch öfters. Der Trick ist, zu erkennen wann man wie viel Abstraktion braucht und wann sie sinnlos 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/2410101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410101</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 23 Jul 2014 14:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit C++ on Wed, 23 Jul 2014 14:34:19 GMT]]></title><description><![CDATA[<p>Ich meine dir fehlt eine Abstraktionsebene. Hättest du ein typedef für die richtigen Templateparametern für die Color-Klasse mit 4 unsigned chars, dann hättest du weder auf Flexibilität noch auf Komfort verzichten müssen. Man will sich halt beim Anwenden nicht mit den Templateparametern rumschlagen müssen.</p>
<p>Ich hatte das letztens erst wieder gelernt. Allgemeine SPI + USB Funktionen -&gt; spezifische Protokollfunktionen, die die allgemeinen SPI/USB-Funktionen benutzen -&gt; Allgemeine &quot;Initialisier mal&quot;-Funktion, die die Protokollfunktionen benutzt. Da sollte jeder Anwender das richtige Level finden.</p>
<p>Außerdem sollte man bei der Implementation der Color-Klasse nicht jede Möglichkeit korrekt implementieren, sondern die Klasse erweiterbar halten. 4 unsigned chars sind als Templatespezialisierung implementiert, die komprimierte 5 Bit Variante wird implementiert sobald sie jemand braucht (sprich nie).</p>
<p>Ich meine man fährt damit ganz gut solange man keine Libraries designen muss, aber ich habe damit nicht genug Erfahrung um sagen zu können, dass es nicht noch besser geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410106</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Wed, 23 Jul 2014 14:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit C++ on Wed, 23 Jul 2014 14:51:49 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it" rel="nofollow">http://en.wikipedia.org/wiki/You_aren't_gonna_need_it</a></p>
<p>Eine Klasse zu machen ist gut, aber übertreibs nicht mit den Template-Parametern. Im Grunde kannst du alles über Traits auslagern, aber irgendwann ist es dann doch einfacher, gleich eine neue Klasse zu schreiben.</p>
<p>Vermeide ausserdem monolithische Klassen. Speicher komprimieren? bitfield&lt;5, 5, 5, 5&gt;, welches auf std::bitset basiert. Color-Klasse? Hat den Farb-Container als Template-Parameter, entweder std::array&lt;unsigned char, 4&gt; oder bitfield&lt;5, 5, 5, 5&gt;. Wenn jede Klasse nur einem kleinem Aufgabenbereich hat, fällt es viel leichter, einzelne Klassen neu zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410112</guid><dc:creator><![CDATA[yagni]]></dc:creator><pubDate>Wed, 23 Jul 2014 14:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit C++ on Wed, 23 Jul 2014 17:51:23 GMT]]></title><description><![CDATA[<p>Deshalb macht man halt ein mal eine ultra hässliche, hingeschmierte Prototyp Version des Programms, und wenn es dann mehr oder weniger läuft hat man meistens eine viel bessere Vorstellung davon, welche Abhängigkeiten existieren und wie man das am besten aufbaut. Bei größeren Projekten funktioniert das natürlich jeweils nur mit Programmteilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410130</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 23 Jul 2014 17:51:23 GMT</pubDate></item></channel></rss>