Java Interop Conventions - Provides guidelines for writing Scala code that remains callable and idiomatic from Java.
Case Class Immutability - Defines case classes with immutable constructor parameters and uses the copy constructor for changes to prevent hash-related bugs.
CamelCase Naming Rules - Names variables and methods in camelCase with self-evident names for readability.
ConcurrentHashMap Preferences - Prefers Java ConcurrentHashMap over Scala's concurrent map to avoid non-atomic getOrElseUpdate.
Loop Over Recursion Preferences - Uses imperative loops and state machines instead of recursion, except for naturally recursive problems like tree traversal.
Naming Conventions - Defines PascalCase for classes and traits, camelCase for methods and variables, and uppercase for constants to ensure consistent code style.
Chaining Length Limits - Keeps chained operations to three or fewer and breaks chains after flatMap to preserve readability.
Option for Nullable Values - Mandates wrapping nullable values in Option to make emptiness explicit and prevent null pointer exceptions.
Performance Optimization Patterns - Provides guidelines for using while loops over for loops to avoid iterator allocation in performance-critical code.
Line Length Limits - Caps source lines at 100 characters, with exceptions only for import statements and URLs.
Exception Assertions - Ships a style guide that mandates asserting exact exception types in tests rather than catching generic exceptions.