Scala Naming Standards
Scala Naming Standards
This page defines naming conventions for Scala codebases, supporting consistency, readability, and onboarding clarity. Inspired by the TypeScript standards used in Bibble projects.
Variables
Use camelCase for local and mutable variables.
Example: var userName = "John"
Values
Use camelCase for immutable values.
Example: val maxRetries = 3
Functions
Use camelCase for method and function names.
Example: def calculateTotal(): Double = { ... }
Parameters
Use camelCase for function parameters.
Example: def getUser(userId: String): User = { ... }
Classes
Use PascalCase for class names.
Example: class UserAccount { ... }
Traits
Use PascalCase for trait names.
Example: trait Serializable { ... }
Objects
Use PascalCase for singleton objects.
Example: object UserManager { ... }
Case Classes
Use PascalCase for the case class name, and camelCase for its attributes.
Example:
case class UserProfile(userName: String, birthYear: Int)
Enumerations
Use PascalCase for enum types and members.
Example:
enum UserRole {
case Admin, Editor, Viewer
}
Constants
Use UPPER_SNAKE_CASE for global constants, or camelCase for scoped values.
Example:
val MAX_RETRY_ATTEMPTS = 5
val apiEndpoint = "https://api.example.com"
Private Members
Use camelCase with optional underscore prefix for internal fields.
Example: private var _balance: Double = 0.0
Public Members
Use camelCase for public fields and methods.
Example: val name: String
Type Parameters
Use single uppercase letters or PascalCase for generic types.
Example: class Box[T] or class Response[TItem]
File Names
Use PascalCase.scala for class/trait/object files.
Example: UserProfile.scala, LoginService.scala
Package Names
Use lowercase dot-separated names.
Example: com.bibble.usermanagement
Companion Objects
Use the same name as the class or trait they accompany.
Example:
class User { ... }
object User { ... }