[linux-l] Designfrage bzgl. Deckverwaltung

Frank Reker frank at reker.net
Fr Okt 21 17:47:19 CEST 2005


Am Fri 21. Oct 2005 15:43 +0000 schrieb Kai Kuehne:

>Oder ich hab in der Karten-Klasse ein member der heißt
>CardProperty m_card_color;
>der mit
>CardProperty* color = new CardProperty("color", "red black white...");
>
>erstellt wurde eben in diesem Member direkt der String steht,
>bzw. das man mit color.getValue() (o.ae.) direkt ran kommt...

klar, aber dann hast du potentielle fehler von der compiletime
auf die runtime verlagert:
if (karte & KARTE_SCWARZ) ...
-> gcc: unknown identifier KARTE_SCWARZ
aber if (karte.color.getValue() == "scwarz") 
kompiliert - ist aber immer false, da es schwarz und nicht scwarz 
heissen muss. (abgesehen davon dass es deutlich inperformanter ist).
auch in c++ benutze ich strings nur als interface zum user. intern
wandel ich mir die immer in zahlen um, und benutze dann macros.

hinzu kommt, dass du fuer jedes attribut eine klasse schreiben
musst, eine weitere fuer die karte selbst, inklusive 
vergleichsoperatoren, copy-constructor, ... 
du programmierst dir'n wolf, erhaelst ein programm, dass wesentlich
inperformanter ist, und dazu noch fehleranfaelliger.
und wo bitte ist der vorteil? 
if (karte & KARTE_SCHWARZ)
und
if (karte.color.getValue() == "schwarz")
sind von der lesbarkeit gleichwertig, nur das erste variante
ein move und ein or benoetigt, zweite etwa 3 funktionsaufrufe +
speicherallocation fuer temporaeres string objekt, ...

das hier ist ein optimales beispiel, wo oop das programm unnoetig
aufblaeht. - KISS


>Ich find beide Varianten mehr als schlecht zu handeln.

wie gesagt - geschmacksache.


>Bei mir hat jede Karte einen eindeutigen Namen...
>das ist schon ein Vorteil. ;)

und welchen vorteil? 
und wenn du's brauchst, dann schreib dir ne funktion, die jede karte
in einen string umwandelt und zurueck, damit hast du mehr gewonnen.
vor allem du hast nur eine stelle im programm, die mit strings hantieren
muss. dieser konverter, kann dann auch gleich fuer etwaige 
kommunikationsprotokolle wiederverwendet werden.


>aber ich werd's nun mit 'ner Klasse machen.

na dann viel erfolg.




-- 
Don't worry be happy ...
Ciao Frank
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20051021/88e77fa0/attachment.sig>


Mehr Informationen über die Mailingliste linux-l