#summary Considerations when developing and reviewing source code.

= Sweeping guidelines =

  # Don't introduce code provisionally. Only insert code that is being used for a purpose. Corollary: Develop using vertical slices, instead of horizontal slices. 
  # Each CL does one thing. Don't insert refactorings into functional changes and vice-versa.
  # Aim for small CLs. 
  # Don't send out "try-things-out" CLs.
  # Make CLs direct and concrete.
    * no unneccesary indirection; keep hierarchies shallow
    * put String constants directly in code instead of having unnecessary finals declared
  # Prefer plain/idiomatic/obvious over clever.
  # Name things!     
    * make specific exception classes
    * don't use "abstract" in class name
    * don't use "impl" in class name
    * name sub-blocks of code by converting to methods


= Particular considerations =

  # Is the code thread safe? Read your code and check whether your code behaves well when multiple methods of an instance are executing simultaneously. Avoid settors to make classes immutable.
  # Was equals considered? 
  # Was hashCode considered?
  # Were exceptions considered? Are exceptions scoped precisely and accurately?
  # Was toString considered? toString is helpful for testing and debugging.
  # Does the code call exit? Don't call exit as it makes code un-libifable and means shutdown sequenceing is not understood.
  # Please provide sufficient tests.
  # BufferedImage is TYPE_INT_RGB
  # Gui use done with SwingUtilities.invokeLater () so that SwingUtilities.isEventDispatchThread() 
  # Usually if a class uses Random, it is parameterizable on Random
  # Was use of System.out and System.err considered? Be very selective about putting information on these channels. Quite possibly never use them for communicating information.
  # Watch out for autoboxing and varargs producing undesireable behaviour.
  # Consider public and final modifiers on classes and methods.
  # Add javadoc

= Detailed Google Java guide =

http://google-styleguide.googlecode.com/svn/trunk/javaguide.html