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.
- 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:
- Estructura del Codi
2.1. Indentació
- Utilitza espais (normalment 2 espais) per a la indentació en lloc de tabuladors.
Exemple:
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."
- Immutabilitat
- Prefereix l'ús de
val
en lloc devar
per fomentar la immutabilitat.
Exemple:
- Gestió d'Errors
- Utilitza
Try
,Option
oEither
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}") }
- Funcions Pures
- Escriu funcions pures que no tinguin efectes secundaris i que sempre retornin el mateix resultat per als mateixos arguments.
Exemple:
- 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
- Estructures de Control
- Evita l'ús de
null
. UtilitzaOption
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 }
- Col·leccions
- Prefereix les col·leccions immutables (
List
,Vector
,Set
, etc.) en lloc de les mutables (ArrayBuffer
,ListBuffer
, etc.).
Exemple:
- 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 }
- 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:
Solució:
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.
Curs de Programació en Scala
Mòdul 1: Introducció a Scala
- Introducció a Scala
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Scala: Sintaxi i Estructura
- Variables i Tipus de Dades
- Operacions Bàsiques i Expressions
Mòdul 2: Estructures de Control i Funcions
- Declaracions Condicionals
- Bucles i Iteracions
- Funcions i Mètodes
- Funcions d'Ordre Superior
- Funcions Anònimes
Mòdul 3: Col·leccions i Estructures de Dades
- Introducció a les Col·leccions
- Llistes i Arrays
- Conjunts i Mapes
- Tuples i Options
- Coincidència de Patrons
Mòdul 4: Programació Orientada a Objectes en Scala
- Classes i Objectes
- Herència i Traits
- Classes Abstractes i Classes Case
- Objectes Companys
- Objectes Singleton
Mòdul 5: Programació Funcional en Scala
- Immutabilitat i Funcions Pures
- Estructures de Dades Funcionals
- Monads i Functors
- For-Comprehensions
- Gestió d'Errors en la Programació Funcional
Mòdul 6: Conceptes Avançats de Scala
- Conversions i Paràmetres Implícits
- Classes de Tipus i Polimorfisme
- Macros i Reflexió
- Concurrència en Scala
- Introducció a Akka