[Lazarus] Delphi post-XE3 roadmap
Graeme Geldenhuys
graeme at geldenhuys.co.uk
Wed Aug 29 19:33:30 CEST 2012
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.
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!
five.times(3);
assertEquals(15, five.amount); // Fail! It's actually 30 now.
}
After calling .times() the five dollar instance isn't 5 any more! Quite
confusing, and probably a good thing to avoid. So the following makes a
lot more sense.
public void testMultiplication() {
Dollar five = new Dollar(5);
Dollar product = five.times(2);
assertEquals(10, product.amount);
product = five.times(3);
assertEquals(15, product.amount);
}
Now we can call five.times(x) all day long, and the five money instance
is always 5.
Cheers,
- Graeme -
More information about the Lazarus
mailing list