Java and OO Best Practices

This is in no way a comprehensive discussion on Java and OO Best Practices. This is a subset of the knowledge we pass around with each other. All of this is subject to programmer opinion and there's a lot more that needs to be learned.

bad practices ("code smells")

- duplicate code Have you ever copy-pasted your code? Follow the "Once and Only Once" rrule.

- accessible fields

Tight coupling, corruptible, inflexible. Should have accessors and mutators. Problems with threading.

- large class

A class should only be doing one thing. Follow the "one responsibility rule."

- large method - using magic literals - unnecessary class/instance variables

If it's only used in one method, make it local

- Initializing strings with "new" - Using floats and doubles for currency calculations - Returning null - Subclassing for functionality - Muffling exceptions - Unexceptional exceptions - Excessive use of switches - Middle man: methods that just delegate to other classes. Case of over-design.

good practices - validate your parameters - abstract or final - create local copies to prevent corruption (hmm... good for multithreading, but heck slow) - String, string buffer - favor immutability (now, there's a thought...)
software engineering best practices

Note to self: should have webcam-based project that tracks red laser pointer.