dr_tectonic (
dr_tectonic) wrote2006-11-15 03:44 pm
Java is lame yet again
Things to hate about Java, #5801:
I get why Java has both Strings and StringBuffers. There are advantages to each, and times when you want to use one rather than the other.
Like, if you're building a long string up out of a lot of little pieces, it's a whole lot more efficient to do it with a StringBuffer, which is designed for that kind of thing, than do it with Strings, because they're immutable and the '+' operator gets translated invisibly into a temporary StringBuffer and some calls to append(), so why not do it that way explicitly in the first place, right?
So, given that the number-one usage of StringBuffer is almost certain to be to concatenating a bunch of Strings together, and given that StringBuffer is just as much a part of the Java language core as String, and given that you can use the '+' and '+=' operators on Strings...
Why in the name of all that is holy is '+=' NOT aliased to 'append()' for StringBuffers?
Argh, I say. Argh.
I get why Java has both Strings and StringBuffers. There are advantages to each, and times when you want to use one rather than the other.
Like, if you're building a long string up out of a lot of little pieces, it's a whole lot more efficient to do it with a StringBuffer, which is designed for that kind of thing, than do it with Strings, because they're immutable and the '+' operator gets translated invisibly into a temporary StringBuffer and some calls to append(), so why not do it that way explicitly in the first place, right?
So, given that the number-one usage of StringBuffer is almost certain to be to concatenating a bunch of Strings together, and given that StringBuffer is just as much a part of the Java language core as String, and given that you can use the '+' and '+=' operators on Strings...
Why in the name of all that is holy is '+=' NOT aliased to 'append()' for StringBuffers?
Argh, I say. Argh.
no subject
Since Java is all passed by-value,
a += bdoesn't modify in place, but is really just shorthand fora = a + bAnd when a is a StringBuffer and b is a String, that turns into
a = a.toString().concat(b)which is what you're trying to avoid in the first place.
no subject
I mean, what other interpretations are there for applying + to a StringBuffer than append()?
If we're adding enough inconsistent syntactic sugar to apply + to String, there's no reason not to apply it to StringBuffer, as well.
no subject
no subject
no subject
In more concrete terms,
StringBuffer sb;
sb += "!";
should be the equivalent of
sb.append("!");
It doesn't make sense to say,
sb + "!";
and I can't see why you'd want to say
sb2 = sb + "!";
though I suppose you might (but that's not the equivalent of append() anyway since append() modifies sb, and nobody expects '+' to have side effects).
I'm not really disagreeing with your rant; I'm just nitpicking it.
no subject
And discover the joys of unintended side effects.
no subject
Oh, wait, no. Use Python!
no subject
And discover the joys of unintended side effects."
Oh, I would *so* go back and re-learn Java if it were Beemerized: just think of all the wise and unique things it could do...and, as a bonus, it would have a really cool mustache...