2009-05-30 4 views

Antwort

2

Es ist völlig in Ordnung, Eigenschaften für diese Art von Szenario zu verwenden. Ich bevorzuge eine Eigenschaft im Gegensatz zu einer GetFoo() -Methode, wenn Sie wirklich nur einen Wert erhalten.

2

Eigenschaften sind in diesem Fall definitiv bevorzugt.

0

Wenn die beabsichtigte (n) Implementierungssprache (n) Eigenschaften unterstützen, ist es vollkommen richtig, sie auch in Ihren Interfaces zu verwenden (natürlich müssen Sie bei Getter/Setter Accessoren bleiben, wenn Ihr Ziel eine Sprache war) das fehlt Unterstützung für Eigenschaften).

0

Ich glaube, wenn Sie versuchen, eine schreibgeschützte Eigenschaft zu deklarieren (auch ohne den privaten Setter) wird der Compiler Sie raten, stattdessen eine Methode zu verwenden.

Bei der richtigen Wahl handelt es sich um eine bestimmte Situation, Ihren Programmierstil und den Designansatz, dem Sie folgen.

1

Die übliche Unterscheidung (zumindest die, die ich benutze, ich hoffe wirklich, es ist "üblich" :)) zwischen Eigenschaften und Methoden immer noch gelten.

Wenn der Akt Daten aus dem Objekt durch eine benannte Kennung (Eigenschaft oder Methode) des Erhaltens ist entweder:

  • Eine teuere Operation (. Dh es könnte eine Datenbank abfragen)
  • oder eine Operation, die hat Nebenwirkungen (dh es könnte ein internes Feld ändern)

... dann sollte es eine Methode sein.

Wenn die Operation leicht ist, ohne Nebenwirkungen, kann dies eine Eigenschaft sein.

Das Lesen des Namens einer Person ist also eine Eigenschaft, da dieser Wert wahrscheinlich im Objekt beginnen sollte.

Um jedoch herauszufinden, wie viele Bestellungen er im System hat, sollte das wahrscheinlich eine Methode sein, da es wahrscheinlich eine teurere Operation zu tun haben wird.

Zumindest das ist das Kriterium, das ich verwende.

Und ob es eine Klasse oder eine Schnittstelle ist macht mir in dieser Hinsicht keinen Unterschied.

In Ihrem speziellen Fall würde ich mit der Eigenschaft gehen. Ein "taggable" -Element sollte seine Tags kennen.

Verwandte Themen