|
|
#### Thread safety
|
|
|
* Classes should be immutable where possible
|
|
|
* Classes that may be used by multiple threads must be thread-safe
|
|
|
* If a class is used by a single thread and is not thread-safe, add a comment
|
|
|
* If a class is not thread-safe, annotate it @NotThreadSafe
|
|
|
* Fields that are used by multiple threads must be volatile or guarded by locks
|
|
|
* If a field or method is guarded by a lock, add a comment
|
|
|
* If a field or method is guarded by a lock, add a comment, e.g. `// Locking: foo`
|
|
|
|
|
|
#### Visibility
|
|
|
* Minimise the visibility of classes, fields and methods
|
|
|
* Fields should be private or protected
|
|
|
* Fields should usually be private, with getters and setters if needed
|
|
|
* Fields should be final where possible
|
|
|
* Inner classes should be static where possible
|
|
|
|
... | ... | |