Use constructor injection where possible
Classes that don't require special constructors (pretty much everything except Activities, Fragments and Views) should use constructor injection rather than field injection. This allows us to make the fields final, so we don't have to worry about whether they're been initialised or whether they should be volatile, and the class can be annotated @NotNullByDefault.