Entwickler-Ecke
Programmiersprachen (Client) - Fragen zur Objektorientierung
Marco D. - Fr 17.08.07 14:50
Titel: Fragen zur Objektorientierung
Ich arbeite an einer String-Klasse in JavaScript. Dazu mal eine Verständnisfrage.
Wenn ich nun ein String-Objekt anlege:
Quelltext
1:
| var mystr = new String('blublablu'); |
und dann die Methode DeleteByIndex aufrufe:
Quelltext
1:
| mystr.DeleteByIndex(1,2); |
Erwartet man als OOP-Programmierer dann, dass diese Funktion den bearbeiteten String zurückgibt und/oder den gekapselten internen String abändert?
Muss ich in der Methode also return bla; schreiben oder this.content = bla; ?
UGrohne - Fr 17.08.07 15:02
Eigentlich kannst Du es haben, wie Du willst, hauptsache es ist dokumentiert. Aber in den meisten Systemen (z.B. .NET) wird ein veränderter String zurückgegeben. Damit hast Du auch die beste Flexibilität, weil Du vll. den Ursprungsstring unverändert lassen willst, aber für eine andere Operation etwas geändert haben willst.
Sollte es dann in der aktuellen Instanz geschehen, brauchst Du ja auch nur eine Zuweisung machen, das sind nur ein paar Zeichen mehr.
Daher meine klare Empfehlung: Rückgabe eines veränderten Strings.
Heiko - So 19.08.07 17:07
An dieser Stelle würde ich ehrlicherweise erwarten, dass er den aktuellen String verändert (synonym zum Delphi-Delete). Von daher wäre es ratsam (wegen den verschiedenen Auffassungen), an dieser Stelle einen extra Parameter einzubauen, der zwischen den beiden möglichkeiten wählen lässt. Oder, was ich an vielen solchen Stellen am besten finde: für beide Varianten eine Funktion anlegen, die sich vom Namen her ähneln (so dass man sie leichter findet, wenn man nur eine kennt) und wo der Name genug auskunft gibt ;).
Grüße
Heiko
Christian S. - So 19.08.07 18:42
Die Rückgabe des Strings hat den großen Vorteil, dass Du auch weiter Operationen drauf anwenden kannst:
C#-Quelltext
1:
| mystr.CopyByIndex(42, 5).DeleteByIndex(1,2).TranslateToKlingon(); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!