
	A program should be light and agile, its subroutines connected like a
strings of pearls.  The spirit and intent of the program should be retained
throughout.  There should be neither too little nor too much, neither needless
loops nor useless variables, neither lack of structure nor overwhelming
rigidity.
	A program should follow the 'Law of Least Astonishment'.  What is this
law?  It is simply that the program should always respond to the user in the
way that astonishes him least.
	A program, no matter how complex, should act as a single unit.  The
program should be directed by the logic within rather than by outward
appearances.
	If the program fails in these requirements, it will be in a state of
disorder and confusion.  The only way to correct this is to rewrite the
program.
		-- Geoffrey James, "The Tao of Programming"
