Reliability: Introduction
37. Do not shadow or obscure identifiers in subscopes
38. Do not declare more than one variable per declaration
39. Use meaningful symbolic constants to represent literal values in program logic
40. Properly encode relationships in constant definitions
41. Return an empty array or collection instead of a null value for methods that return an array or collection
42. Use exceptions only for exceptional conditions
43. Use a try-with-resources statement to safely handle closeable resources
44. Do not use assertions to verify the absence of runtime errors
45. Use the same type for the second and third operands in conditional expressions
46. Do not serialize direct handles to system resources
47. Prefer using iterators over enumerations
48. Do not use direct buffers for short-lived, infrequently used objects
49. Remove short-lived objects from long-lived container objects