[Lazarus] Delphi post-XE3 roadmap
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Wed Aug 29 22:46:41 CEST 2012
Graeme Geldenhuys schrieb:
> On 29/08/12 17:24, Hans-Peter Diettrich wrote:
>>
>> How do you intend to implement string operators?
>
> I haven't thought or got to that part yet. I'll start with .Append(),
> .Equals(), .Replace(), .SubString(), .Split() etc to cover all bases.
>
> I'm still deciding if the TString class must be immutable or not. With
> my strong Design Patterns background, I'm strongly leaning towards that
> though. So .Append() and .Replace() for example will return new
> instances of the class.
This is just what can make such classes dead slow in real life use.
> The classic unit test Money example explains this "immutable" reasoning
> well. Consider the following...
>
> public void testMultiplication() {
> Dollar five = new Dollar(5);
> five.times(2);
> assertEquals(10, five.amount); // Confusing!
Now replace "five" by "MyAccount", and feel comfortable with the
continued increase :-)
In a good C++ design one would implement both "+" and "+=" operators, so
that a compiler has a chance to optimize expression evaluation.
DoDi
More information about the Lazarus
mailing list