Mutable as opposed to immutable - i.e. final. In other words, having an object that has properties that can be manipulated by other objects is bad programming.
It is one of the core concepts of OO programming.
I do not understand people who feel that using design features of a language is bad design, that a good programmer deliberately handicaps themselves by limiting their toolset, like when people say using automatic imports is bad form.
That I can see from one particular crowd: hardcore C++ programmers. Typically, your data fields are private there, and you make accessor methods for them. (Or, if you're using C#, accessor fields.) Mostly, its to control how things are retrieved and set, which I can partly understand, but if your accessor methods are just going to be "return field;" and "field = value;," then you may as well make it public.
http://minecraft.gamepedia.com/Chunk_format
Look at the ExtendedBlockStorage class. They're actually using half-bytes (aka nibbles) for that in the memory.
Accessing an element in such a nibble array basically goes like this:
Code:
byte value = array[index >> 1];
if(index & 1 == 0)
return value & 0xF;
else
return value >> 4;
I stand corrected. Its still an...odd way to implement things. I dunno, I tend to avoid bitwise operators, myself. Too messy and thinkin on 'em too long scrambles my brain.