Java styles

  • Mutable/OOP (DI) vs. Immutable/functional
    • final vs. non-final (Lombok’s val)
    • DI service vs. @Utility
  • null vs. Optional
  • Generics actively vs. passively
  • Type inference
  • Checked exception vs. RuntimeException
    • @SneakyThrows
  • With or without Lombok
    • @Data, @Builder
  • Traits: Interfaces with default implementation
  • Statements (for, break, continue) vs. methods (forEach/map, findFirst, filter)
  • JDK 7, 8, 11, 16