En aquest tema, explorarem les millors pràctiques i l'estil de codi recomanat per a la programació en Scala. Seguir aquestes directrius no només farà que el teu codi sigui més llegible i mantenible, sinó que també ajudarà a evitar errors comuns i millorarà la col·laboració amb altres desenvolupadors.

  1. Nomenclatura

1.1. Noms de Variables i Funcions

  • Utilitza el format camelCase per a noms de variables i funcions.
  • Els noms han de ser descriptius però concisos.

Exemple:

val userName = "JohnDoe"
def calculateTotal(price: Double, quantity: Int): Double = price * quantity

1.2. Noms de Classes i Objectes

  • Utilitza el format PascalCase per a noms de classes i objectes.

Exemple:

class ShoppingCart
object DatabaseConnection

  1. Estructura del Codi

2.1. Indentació

  • Utilitza espais (normalment 2 espais) per a la indentació en lloc de tabuladors.

Exemple:

def greet(name: String): Unit = {
  println(s"Hello, $name!")
}

2.2. Línies de Codi

  • Mantén les línies de codi curtes, preferiblement menys de 80 caràcters.
  • Si una línia és massa llarga, trenca-la en múltiples línies de manera lògica.

Exemple:

val longString = "This is a very long string that should be broken into " +
  "multiple lines to improve readability."

  1. Immutabilitat

  • Prefereix l'ús de val en lloc de var per fomentar la immutabilitat.

Exemple:

val immutableList = List(1, 2, 3)

  1. Gestió d'Errors

  • Utilitza Try, Option o Either per gestionar errors en lloc de llançar excepcions.

Exemple:

import scala.util.{Try, Success, Failure}

def parseInt(s: String): Try[Int] = Try(s.toInt)

parseInt("123") match {
  case Success(value) => println(s"Parsed value: $value")
  case Failure(exception) => println(s"Failed to parse: ${exception.getMessage}")
}

  1. Funcions Pures

  • Escriu funcions pures que no tinguin efectes secundaris i que sempre retornin el mateix resultat per als mateixos arguments.

Exemple:

def add(a: Int, b: Int): Int = a + b

  1. Documentació

  • Utilitza comentaris per explicar el codi complex o no trivial.
  • Escriu documentació per a funcions i classes utilitzant el format de comentaris de ScalaDoc.

Exemple:

/**
 * Afegeix dos nombres.
 *
 * @param a El primer nombre.
 * @param b El segon nombre.
 * @return La suma de `a` i `b`.
 */
def add(a: Int, b: Int): Int = a + b

  1. Estructures de Control

  • Evita l'ús de null. Utilitza Option per representar valors que poden ser absents.

Exemple:

def findUser(id: Int): Option[User] = {
  // Implementació que retorna Some(user) si es troba l'usuari, None en cas contrari
}

  1. Col·leccions

  • Prefereix les col·leccions immutables (List, Vector, Set, etc.) en lloc de les mutables (ArrayBuffer, ListBuffer, etc.).

Exemple:

val numbers = List(1, 2, 3, 4, 5)

  1. Patrons de Disseny

  • Utilitza patrons de disseny com Singleton, Factory, Builder, etc., quan sigui apropiat.

Exemple:

object DatabaseConnection {
  private val connection = new DatabaseConnection()

  def getInstance: DatabaseConnection = connection
}

  1. Consells Addicionals

  • Evita la duplicació de codi. Refactoritza el codi repetit en funcions o mètodes.
  • Escriu proves unitàries per assegurar-te que el teu codi funciona correctament.
  • Revisa el codi regularment amb el teu equip per mantenir la qualitat del codi.

Exercici Pràctic

Exercici 1: Refactorització de Codi

Refactoritza el següent codi per seguir les millors pràctiques i l'estil de codi de Scala:

var total = 0
for (i <- 1 to 10) {
  total = total + i
}
println("Total: " + total)

Solució:

val total = (1 to 10).sum
println(s"Total: $total")

Conclusió

Seguir les millors pràctiques i mantenir un estil de codi consistent és essencial per escriure codi Scala llegible, mantenible i lliure d'errors. Aquestes directrius t'ajudaran a millorar la qualitat del teu codi i a col·laborar de manera més efectiva amb altres desenvolupadors.

© Copyright 2024. Tots els drets reservats