Scala Naming Standards

From bibbleWiki
Jump to navigation Jump to search

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()
}