Introduction
1.
Reference for code reviewers
2.
General code style
2.1.
Formatting and whitespace
2.2.
Naming
2.3.
Imports
2.4.
Braces
2.5.
Comments
3.
Type system
3.1.
Return type annotations
3.2.
Structural typing
3.3.
Generics and variance
3.4.
Higher-kinded types
3.5.
Abstract types
3.6.
Path-dependent types
3.7.
Type aliases
3.8.
Any, AnyRef and AnyVal
3.9.
isInstanceOf, asInstanceOf
4.
Language features
4.1.
Implicits
4.2.
override modifier
4.3.
abstract override modifier
4.4.
Pattern matching
4.5.
Multiple parameter list
4.6.
Symbolic methods and infix and postfix notation
4.7.
Apply method on classes
4.8.
Call by name
4.9.
Return statements
4.10.
Macros
4.11.
Exception handling
4.12.
Operation chains
4.13.
Operations nesting and for comprehensions
4.14.
String interpolation
4.15.
Tuples
5.
Patterns and architecture
5.1.
Cake pattern
5.2.
Type classes
5.3.
Error handling
5.4.
Functional programming
5.5.
Object-oriented programming
5.6.
Domain-specific languages
6.
Libraries
6.1.
Collections
6.2.
Concurrency
6.3.
Other Scala libraries
6.4.
Java libraries
Scala Programming Guidelines
Language features