Nothing new for a week, but saw a set of puzzles which attempt to promote “good” programming and awareness of bugs that may crop up when bad programming practices are applied.
Some of the morals in the 8 puzzles include:
- Avoid mixed-arithmetic computation
- Use parenthesis to make clear your comparison intention
- Use .equals() for object comparison instead of ==
- Do not depend on interned string for program correctness
- Do not assign to a single variable twice in a single statement
- The postfix ++ operator increments the value, but returns the old value.
- Document your intention when using & and |. Usually && and || should be used.
- Never use exceptions for normal flow.
- Avoid complicated initialization sequences, choose EITHER lazy or eager init, but never both.
- int arithmetic overflows silently.
- Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE
- If you can’t see a method, you cannot override it.
- Don’t use background threads in initialization – leads to lock-free deadlock!