If your observation that such expressions has any evidence to back it up
it's a good argument for something. Maybe not for changing the potency
of the auto-inc/decrement operator but for hiring better-trained
programmers, but for something. Assuming the evidence sustains the
observation.
If you have a hard time understanding that expression and you call
yourself a Java programmer, there's a disconnect.
Fortunately, I don't care about being a Java programmer, or a C
programmer, or any other qualified sort of programmer. I'm just a
programmer. For my purposes, writing simple, obvious code in whatever
language I happen to be using is far more important than showing off my
understanding of the JLS.
The JLS itself agrees with me on this: "It is recommended that code not
rely crucially on this specification. Code is usually clearer when each
expression contains at most one side effect, as its outermost operation,
and when code does not depend on exactly which exception arises as a
consequence of the left-to-right evaluation of expressions."
[
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.7]
The block:
{
x
= y;
i++;
j++;
}
follows that recommendation. Squishing all three side effects into one
statement does not.
I would go against a JLS recommendation about how to use the language
only if I had a strong positive reason to do so. That is especially the
case when it is arguing for simplicity, which I would prefer anyway.