Autor Beitrag
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Fr 17.08.07 14:50 
Ich arbeite an einer String-Klasse in JavaScript. Dazu mal eine Verständnisfrage.
Wenn ich nun ein String-Objekt anlege:
ausblenden Quelltext
1:
var mystr = new String('blublablu');					

und dann die Methode DeleteByIndex aufrufe:
ausblenden 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; ?

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 19.08.07 18:42 
Die Rückgabe des Strings hat den großen Vorteil, dass Du auch weiter Operationen drauf anwenden kannst:

ausblenden C#-Quelltext
1:
mystr.CopyByIndex(425).DeleteByIndex(1,2).TranslateToKlingon();					

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".