<?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[&amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein?]]></title><description><![CDATA[<p>Ich hab mal wieder eine frage, auf die ich von allen seiten seit... joa eigentlich schon immer <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="😃"
    /> verschiedene meinungen höre.</p>
<p>Was sind vorteile und nachteile wenn man &quot;getter&quot; und &quot;setter&quot; funktionen für den zugriff auf memebervariablen verwendet, bzw. wann sollte man sie verwenden und wann nicht.<br />
Verwendet ihr derartige funktionen? Wenn ja warum?</p>
<p>meine programme laufen größtenteils singlethreaded, also das thema kann erstmal unbeachtet bleiben <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>PS: ich weiß, das ist nur so eins der vielen kleinen (unwichtigen) details eines programms, aber ich möchte das jetzt einmal geklärt haben <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/topic/313991/quot-getter-quot-und-quot-setter-quot-ja-oder-nein</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 09:19:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313991.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Feb 2013 20:41:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 20:41:56 GMT]]></title><description><![CDATA[<p>Ich hab mal wieder eine frage, auf die ich von allen seiten seit... joa eigentlich schon immer <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="😃"
    /> verschiedene meinungen höre.</p>
<p>Was sind vorteile und nachteile wenn man &quot;getter&quot; und &quot;setter&quot; funktionen für den zugriff auf memebervariablen verwendet, bzw. wann sollte man sie verwenden und wann nicht.<br />
Verwendet ihr derartige funktionen? Wenn ja warum?</p>
<p>meine programme laufen größtenteils singlethreaded, also das thema kann erstmal unbeachtet bleiben <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>PS: ich weiß, das ist nur so eins der vielen kleinen (unwichtigen) details eines programms, aber ich möchte das jetzt einmal geklärt haben <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/2299317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299317</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Sat, 16 Feb 2013 20:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 20:50:31 GMT]]></title><description><![CDATA[<p>Saubere Schnittstellen bedingen getter/setter.<br />
Für Wartbarkeit wie z.B. Debugging sind getter/setter per se besser geeignet als sich auf irgendwelche IDE Features diesbezüglich zu verlassen.<br />
Performanzgewinne durch Einsparen von getter/setter sind Aberglaube.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299323</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Sat, 16 Feb 2013 20:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 20:55:04 GMT]]></title><description><![CDATA[<p>also die schreibarbeit lohnt sich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<blockquote>
<p>besser geeignet als sich auf irgendwelche IDE Features diesbezüglich zu verlassen</p>
</blockquote>
<p>...das war auch der grund warum ich es bis jetzt so gemacht habe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299328</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Sat, 16 Feb 2013 20:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 22:21:33 GMT]]></title><description><![CDATA[<p>In den meisten Fällen lohnt sich das. Der Nachteil ist die größere Schreibarbeit, insbesondere wenn man auf Elemente der Klasse/Struktur später zugreift und die Verschachtelungstiefe hoch ist.</p>
<p>Die Vorteile liegen darin, dass man keinen direkten Zugriff auf die Attribute hat, sondern gekapselt. Dadurch kann man bei Bedarf Set/Get auch etwas zurückgeben lassen, was nicht 1:1 ein Attribut ist. Beispielsweise könnte eine Klasse einige Attribute halten und dazu Getter anbieten. Später merkt man jedoch, dass sich ein Attribut aus den anderen berechnen lassen kann. Jetzt kann man das Attribut einfach löschen und den Getter ändern ohne sonst irgendwelchen Code anfassen zu müssen.</p>
<p>Hätte man hier einen direkten Zugriff auf das Attribut gehabt, so hätte man den Code überall dort ändern müssen, wo der Zugriff erfolgt wäre.</p>
<p>Das gilt übrigens für private Attribute, auf die man über andere Klassen/Funktionen zugreift, wie auch für private Attribute, auf die von Unterklassen zugegriffen werden soll; die sollten auch nicht protected sein, da hier dieselbe Kapselungsargumentation gilt.</p>
<p>Bis auf das Beispiel oben fällt mir jedoch gerade kein wesentlicher Vorteil ein. Wenn klar ist, dass eine Struktur nur bloße Daten hat (und daher eben auch eine Struktur und nicht Klasse ist, was diese Semantik bereits andeutet), dann kann man sich die Getter/Setter wohl auch sparen. Üblich ist das bei Strukturen, die z.B. als Rückgabe- oder als Parameterübergabe-Typen dienen.</p>
<p>Umso länger ich darüber nachdenke, umso weniger trivial oder pauschal beantwortbar finde ich die Frage. Gab auch Mal eine umfangreiche Diskussion dazu, bei der - ich glaube - knivil für etwas weniger Getter/Setter (nicht keine!) plädiert hatte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299349</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 16 Feb 2013 22:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 23:08:29 GMT]]></title><description><![CDATA[<p>Problematisch wird es, wenn man präventiv für jede Membervariable ein get/set-Paar einbaut, weil man ja auf die entsprechende Variable mal zugreifen könnte. Man sollte sich eher überlegen, welche Eigenschaften einer Klasse nach aussen relevant sind (Schnittstelle) und <em>wie</em> man auf diese zugreifen möchte. Teilweise will man nämlich gar nicht den Wert direkt setzen, sondern ihn auf eine bestimmte Art verändern. Oder man will nur lesen. Oder gar nichts...</p>
<p>Zu viele Getter/Setter wirken sich negativ auf Kapselung aus, da man der Implementierung weniger Freiheiten lässt (sie muss bestimmte Werte anbieten, obwohl diese vielleicht nur für eine spezifische Implementierung, und nicht für die Funktionalität der Klasse an sich notwendig sind). Die Alternative sind dabei nicht <code>public</code> -Variablen, sondern besser ausgedachte Modifiziererfunktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299352</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 16 Feb 2013 23:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 23:50:48 GMT]]></title><description><![CDATA[<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299354</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 16 Feb 2013 23:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sat, 16 Feb 2013 23:54:23 GMT]]></title><description><![CDATA[<p>Getter/Setter sollte man Grundsätzlich immer dann einsetzen wenn man nur eins von beidem braucht, also zB nur Lesezugriff, oder wenn der Zugriff eine direkte Nebenwirkung hat, Ausrechnen von Werten oder Weitergabe der Änderung. Hier sollte man aber auch nur das nutzen was man wirklich braucht, pauschal alles anzubieten artet schnell aus.</p>
<p>Wo ich Getter/Setter Grundsätzlich nicht einsetze sind Strukturen und Reine Arbeitsklassen die Daten mit ein paar operationen verbinden, zB 2D / 3D Vektoren, Brüche usw. Dort haben änderungen keine Auswirkung und die Klasse ist rein dazu gebaut diese Daten oft zu ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299355</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sat, 16 Feb 2013 23:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 00:15:51 GMT]]></title><description><![CDATA[<p>Zu beachten ist, daß einige Typen ihre Attribute nicht oder nur sehr schwer nachträglich ändern können. Einige? Naja, viele, fast alle.<br />
Siehe <a href="http://www.c-plusplus.net/forum/313498-64" rel="nofollow">http://www.c-plusplus.net/forum/313498-64</a><br />
Man beachte:<br />
Die Person wird nie ihren Namen ändern. (2 Setter weg).<br />
Das Alter wird besser nicht gespeicher, sondern der Geburtstag. (1 Setter weg).<br />
Ups, alle Setter weg.<br />
Was muss intern passieren bei</p>
<pre><code>if(pImage-&gt;getFormat()==&quot;BMP&quot;) 
   pImage-&gt;setFormat(&quot;BMP&quot;);
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299361</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 17 Feb 2013 00:15:51 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 00:17:51 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Wo ich Getter/Setter Grundsätzlich nicht einsetze sind Strukturen und Reine Arbeitsklassen die Daten mit ein paar operationen verbinden, zB 2D / 3D Vektoren, Brüche usw. Dort haben änderungen keine Auswirkung und die Klasse ist rein dazu gebaut diese Daten oft zu ändern.</p>
</blockquote>
<p>Du könntest leicher jagen, welches taube Nüßchen Dir eine 0 in den Nenner geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299362</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 17 Feb 2013 00:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 02:58:11 GMT]]></title><description><![CDATA[<p>Reine &quot;Datenhalter&quot; Klassen, die keine Invarianten etc. haben, bekommen bei mir einfach öffentliche Member.<br />
Also z.B. die erwähnten 2D/3D-Vektoren, ne Rect-Klasse etc.<br />
Genau so diverse Parameters-Klassen die zur Vermeidung von Funktionen mit mehr als 2-3 Parametern verwendet werden.</p>
<p>Dadurch bleiben dann kaum noch Klassen übrig, die nur triviale <code>return x</code> Getter bzw. <code>x = value</code> Setter haben.<br />
Meist macht zumindest der Setter irgendwas zusätzlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299378</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 17 Feb 2013 02:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 03:03:17 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist ein Statement, das nur mit eine sehr engen Definition von &quot;Getter&quot; bzw. &quot;Setter&quot; Sinn macht.<br />
Bevor man sowas behauptet, sollte mal also besser erklären was man mit &quot;Getter&quot; und &quot;Setter&quot; meint.</p>
<p>Beispielsweise wird quasi jedes Widget einer GUI Library einen &quot;Setter&quot; für die Position haben. Ob der nun &quot;SetPosition&quot; oder &quot;Move&quot; heisst ist dabei mMn. irrelevant. Das heisst aber nicht dass dabei die Kapselung gebrochen wurde.<br />
Natürlich macht der <code>SetPosition</code> Setter dabei mehr als nur <code>pos = value</code> , und ist daher laut der für das von dir abgegebene Statement nötigen Definition vermutlich kein Setter mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299379</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 17 Feb 2013 03:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 04:05:15 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Bevor man sowas behauptet, sollte mal also besser erklären was man mit &quot;Getter&quot; und &quot;Setter&quot; meint.</p>
</blockquote>
<p>Damit meine ich Funktionen, die internen Zustand nach außen propagieren. Eine klare Grenze zu ziehen ist schwer, aber imo sollte man diese eher eng ansetzen, da ansonsten am Ende jede Methode als Getter oder Setter zu verstehen wäre...</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Beispielsweise wird quasi jedes Widget einer GUI Library einen &quot;Setter&quot; für die Position haben. Ob der nun &quot;SetPosition&quot; oder &quot;Move&quot; heisst ist dabei mMn. irrelevant. Das heisst aber nicht dass dabei die Kapselung gebrochen wurde.</p>
</blockquote>
<p>Das hängt wohl stark vom Design der UI Library ab. Bei mir ist die Position eines Widget z.B. kein Attribut des Widget, sondern wird vom Container des Widget bestimmt, welcher sich um das Layout kümmert... <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/2299383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299383</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 17 Feb 2013 04:05:15 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 05:04:29 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist doch nur ein krampfhafter versuch etwas &quot;besser&quot; zu machen, obwohl es nicht sein muss. Wenn ich z.B. ein CAD Programm habe und die Objekte (Kurven/Flächen) haben Namen die in verschiedenen GUI-Elementen angezeigt/umbenannt werden können, warum sollen die dann kein get/setName haben? Was würdest du machen? Warum ist das dann besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299388</guid><dc:creator><![CDATA[a35sw4ed5rf6t7gz8h]]></dc:creator><pubDate>Sun, 17 Feb 2013 05:04:29 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 05:25:33 GMT]]></title><description><![CDATA[<p>a35sw4ed5rf6t7gz8h schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist doch nur ein krampfhafter versuch etwas &quot;besser&quot; zu machen, obwohl es nicht sein muss. Wenn ich z.B. ein CAD Programm habe und die Objekte (Kurven/Flächen) haben Namen die in verschiedenen GUI-Elementen angezeigt/umbenannt werden können, warum sollen die dann kein get/setName haben? Was würdest du machen? Warum ist das dann besser?</p>
</blockquote>
<p>Was genau ist der Grund, wieso der Name deiner Meinung nach Teil einer Kurve oder Fläche sein sollte? Imo ist der Name etwas, über das eine bestimmte Instanz einer Kurve oder Fläche von der Anwendung identifiziert werden kann. Ein Name ist aber imo nicht Teil des Konzepts einer Kurve oder Fläche. Folgedessen sollte der Name auch nicht Attribut der Klasse Kurve bzw. Fläche sein, sondern die Anwendung eine Map haben, die Namen auf Instanzen abbildet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299391</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 17 Feb 2013 05:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 05:38:26 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>a35sw4ed5rf6t7gz8h schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist doch nur ein krampfhafter versuch etwas &quot;besser&quot; zu machen, obwohl es nicht sein muss. Wenn ich z.B. ein CAD Programm habe und die Objekte (Kurven/Flächen) haben Namen die in verschiedenen GUI-Elementen angezeigt/umbenannt werden können, warum sollen die dann kein get/setName haben? Was würdest du machen? Warum ist das dann besser?</p>
</blockquote>
<p>Was genau ist der Grund, wieso der Name deiner Meinung nach Teil einer Kurve oder Fläche sein sollte? Imo ist der Name etwas, über das eine bestimmte Instanz einer Kurve oder Fläche von der Anwendung identifiziert werden kann. Ein Name ist aber imo nicht Teil des Konzepts einer Kurve oder Fläche. Folgedessen sollte der Name auch nicht Attribut der Klasse Kurve bzw. Fläche sein, sondern die Anwendung eine Map haben, die Namen auf Instanzen abbildet...</p>
</blockquote>
<p>Der Name ist nicht Teil des Konzepts einer Kurve oder Fläche, sondern eines Objekts. Objekte können auch nur &quot;Gruppen&quot; sein die andere Objekte enthalten. Die Namen der Objekte werden auch in Files gespeichert. Was soll das an deiner Map besser sein? Kennt dann GUI, FileIO usw die Applikation um den Namen zu holen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299393</guid><dc:creator><![CDATA[a35sw4ed5rf6t7gz8h]]></dc:creator><pubDate>Sun, 17 Feb 2013 05:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 09:22:29 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Du könntest leicher jagen, welches taube Nüßchen Dir eine 0 in den Nenner geschrieben hat.</p>
</blockquote>
<p>Ich gehe bei solchen Klassen grundsätzlich davon aus das der Nutzer die Regeln kennt. Man kann bei dieser Sache natürlich auch public Variablen und einen Setter nehmen so das der Nutzer der Klasse den Setter nehmen kann wenn er sich unsicher ist ob an dieser Stelle evtl eine 0 kommen kann, und sich damit die Prüfung für die Fälle sparen in denen es nicht passiert.</p>
<p>dot schrieb:</p>
<blockquote>
<p>Folgedessen sollte der Name auch nicht Attribut der Klasse Kurve bzw. Fläche sein, sondern die Anwendung eine Map haben, die Namen auf Instanzen abbildet...</p>
</blockquote>
<p>Das finde ich etwas übertrieben. Das bedeutet ja im Grunde das man jedesmal die Map durchsuchen muß um an den Namen zu kommen statt einfach getName() auf die Instanz aufzurufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299404</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 17 Feb 2013 09:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 09:39:31 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist ein Statement, das nur mit eine sehr engen Definition von &quot;Getter&quot; bzw. &quot;Setter&quot; Sinn macht.<br />
Bevor man sowas behauptet, sollte mal also besser erklären was man mit &quot;Getter&quot; und &quot;Setter&quot; meint.</p>
</blockquote>
<p>Die Aussage macht nur für triviale Getter/Setter Sinn, das ist IMHO klar und nicht erklärungsbedürftig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299407</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 17 Feb 2013 09:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:05:57 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Getter und Setter brechen die Kapselung. Wann immer du meinst, einen Getter oder Setter zu brauchen, solltest du darüber nachdenken, was die Variable eigentlich in der Klasse verloren hat.</p>
</blockquote>
<p>Das ist ein Statement, das nur mit eine sehr engen Definition von &quot;Getter&quot; bzw. &quot;Setter&quot; Sinn macht.<br />
Bevor man sowas behauptet, sollte mal also besser erklären was man mit &quot;Getter&quot; und &quot;Setter&quot; meint.</p>
</blockquote>
<p>Die Aussage macht nur für triviale Getter/Setter Sinn, das ist IMHO klar und nicht erklärungsbedürftig.</p>
</blockquote>
<p>Was sind triviale Getter/Setter? Ist checkbox.getState() oder textfield.getText() oder object.getName() trivial?</p>
<p>Die Aussage macht eigentlich garkeinen Sinn. Getter und Setter brechen die Kapselung, wenn sie Zugriff/Modifikation von internen Daten zulassen und nicht einfach weil irgendwas so heißt. Genauso sollte man auch keine anderen public Methoden haben die Wissen über internes vom Anwender verlangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299409</guid><dc:creator><![CDATA[a35sw4ed5rf6t7gz8h]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:36:31 GMT]]></title><description><![CDATA[<p>a35sw4ed5rf6t7gz8h schrieb:</p>
<blockquote>
<p>Was sind triviale Getter/Setter?</p>
</blockquote>
<p>Versuchs mal mit Google.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299412</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:44:49 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>a35sw4ed5rf6t7gz8h schrieb:</p>
<blockquote>
<p>Was sind triviale Getter/Setter?</p>
</blockquote>
<p>Versuchs mal mit Google.</p>
</blockquote>
<p>Finde nur Foren, sowas ist keine klare Definition und sagt schon garnichts darüber aus, was du dafür hältst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299414</guid><dc:creator><![CDATA[a35sw4ed5rf6t7gz8h]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:47:08 GMT]]></title><description><![CDATA[<p>Cool ist auch, wenn man versucht &quot;Get&quot; und &quot;Set&quot; zu vermeiden, stattdessen zwei Überladungen (non-const und const mit retval) macht und dann bei std::bind die Quittung bekommt -.-</p>
<p>Dot: Ist Dein GUI-Code irgendwo einsehbar? Ich stelle mir das arg blöde vor, damit bewegbare Fenster und so Zeugs zu implementieren. Wenn das alles natürlich immer nur vom Parent oder wem anders gelayoutet wird, ists natürlich okay...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299415</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:47:08 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:53:23 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Dot: Ist Dein GUI-Code irgendwo einsehbar? Ich stelle mir das arg blöde vor, damit bewegbare Fenster und so Zeugs zu implementieren. Wenn das alles natürlich immer nur vom Parent oder wem anders gelayoutet wird, ists natürlich okay...</p>
</blockquote>
<p>Klingt nach GTK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299417</guid><dc:creator><![CDATA[gdvtdztvz]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 10:54:42 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Das ist ein Statement, das nur mit eine sehr engen Definition von &quot;Getter&quot; bzw. &quot;Setter&quot; Sinn macht.</p>
</blockquote>
<p>Oder nicht einmal da.</p>
<p>Nehmt als Beispiel die SFML-Klasse <a href="http://www.sfml-dev.org/documentation/2.0/classsf_1_1Sprite.php" rel="nofollow">sf::Sprite</a>. Da gibts viele set/get-Methoden, um auf einzelne Attribute wie Position, Rotation, Skalierung, Textur, Textur-Rechteck, Farbe, etc. zuzugreifen. Was genau ist daran schlecht, und wie würdet ihr sowas besser designen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299419</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Feb 2013 10:54:42 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 11:00:55 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: Also ich ziehe aus diesen Diskussionen immer die Aussage, dass eben alles gekapselt sein sollte. Seither habe ich den Monitor immer mit Pappe zugedeckt, damit ich nicht Software-Interna sehen muss. Die Tastatur ist natürlich abgestöpselt. Nur dieses Forum liegt mir am Herzen, da mache ich ab und zu eine Ausnahme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299420</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 17 Feb 2013 11:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 11:17:50 GMT]]></title><description><![CDATA[<p>Irgendwie habe ich das Gefühl, dass hier in diesem Thread absichtlich vieles falsch verstanden oder ausgelegt wird - von <s>beiden</s> allen Seiten.</p>
<p>Absolute statements are always wrong. Nicht alles wo get oder set dransteht ist ein trivialer Getter/Setter (d.h. eine Memberfunktion in der einfach <code>return membervariable;</code> steht und ihr Setter-Äquivalent). Nicht alle guten Modelle schließen kategorisch aus, dass es auch mal diese trivialen Getter/Setter für die Member einer Klasse gibt.</p>
<p>Hier kommt nun mein eigener Beitrag zum Thema: Wie volkard bereits so schön verlinkt hat, tendieren viele Anfänger, oftmals aufgrund schlechter Vorbilder, dazu, zu einem Datenmember einer Klasse automatisch einen trivialen Getter und Setter zu schreiben. Manche benutzen dafür sogar Funktionen ihrer IDE, ich erinnere mich sogar an einen Thread, in dem stolz ein Makro a la</p>
<pre><code>#define MEMBER_VAR(type, name)    \
private:                          \
 type name;                       \
public:                           \
 type get_##name () const         \
  { return name ; }               \
 void set_##name (type arg)       \
  { name = arg; }
</code></pre>
<p>vorgestellt wurde. Es ist wohl jedem einsichtig, dass dieses zwanghafte Anlegen von Gettern und Settern <strong>keine</strong> gute Praxis ist, oder? Da brauche ich auch keine weitergehende Begründung und Alternativen zu nennen, denke ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299421</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 17 Feb 2013 11:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Getter&amp;quot; und &amp;quot;Setter&amp;quot; - Ja oder nein? on Sun, 17 Feb 2013 11:38:31 GMT]]></title><description><![CDATA[<p>Der Sinn von Gettern/Settern ist stark kontextabhängig. Man sollte sie so viel wie nötig und so wenig wie möglich einsetzen. Ich finde, das Wichtigste ist mit folgendem Beitrag gesagt:</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Man sollte sich eher überlegen, welche Eigenschaften einer Klasse nach aussen relevant sind (Schnittstelle) und wie man auf diese zugreifen möchte. Teilweise will man nämlich gar nicht den Wert direkt setzen, sondern ihn auf eine bestimmte Art verändern. Oder man will nur lesen. Oder gar nichts...</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2299423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299423</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Sun, 17 Feb 2013 11:38:31 GMT</pubDate></item></channel></rss>