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.
var userName = "John"
Values
Use camelCase for immutable values.
val maxRetries = 3
Functions
Use camelCase for method and function names.
def calculateTotal(): Double = {
// logic here
}
Parameters
Use camelCase for function parameters.
def getUser(userId: String): User = {
// logic here
}
Classes
Use PascalCase for class names.
class UserAccount {
// fields and methods
}
Traits
Use PascalCase for trait names.
trait Serializable {
def serialize(): String
}
Objects
Use PascalCase for singleton objects.
object UserManager {
def createUser(name: String): User = {
// logic here
}
}
Case Classes
Use PascalCase for the case class name, and camelCase for its attributes.
case class UserProfile(userName: String, birthYear: Int)
Enumerations
Use PascalCase for enum types and members.
enum UserRole {
case Admin, Editor, Viewer
}
Constants
Use UPPER_SNAKE_CASE for global constants, or camelCase for scoped values.
val MAX_RETRY_ATTEMPTS = 5
val apiEndpoint = "https://api.example.com"
Private Members
Use camelCase with optional underscore prefix for internal fields.
private var _balance: Double = 0.0
Public Members
Use camelCase for public fields and methods.
val name: String
def getName(): String = name
Type Parameters
Use single uppercase letters or PascalCase for generic types.
class Box[T]
class Response[TItem]
File Names
Use PascalCase.scala for class/trait/object files.
UserProfile.scala
LoginService.scala
Package Names
Use lowercase dot-separated names.
com.bibble.usermanagement
Companion Objects
Use the same name as the class or trait they accompany.
class User {
def greet(): String = "Hello"
}
object User {
def default(): User = User()
}