En aquest tema, explorarem les millors pràctiques i convencions d'estil de codi per a Groovy. Seguir aquestes directrius no només farà que el teu codi sigui més llegible i mantenible, sinó que també facilitarà la col·laboració amb altres desenvolupadors.
- Nomenclatura
1.1. Variables i Funcions
- Variables locals: Utilitza la notació camelCase.
def userName = "John Doe" def totalAmount = 100.50
- Funcions: Utilitza la notació camelCase.
def calculateTotalPrice(price, tax) { return price + tax }
1.2. Classes i Enums
- Classes: Utilitza la notació PascalCase.
class UserProfile { String name int age }
- Enums: Utilitza la notació PascalCase.
enum UserStatus { ACTIVE, INACTIVE, BANNED }
1.3. Constants
- Constants: Utilitza majúscules amb guions baixos.
final int MAX_USERS = 100 final String DEFAULT_LANGUAGE = "en"
- Estructura del Codi
2.1. Indentació
- Utilitza 4 espais per a la indentació. No utilitzis tabuladors.
class Example { def method() { if (true) { println "Hello, World!" } } }
2.2. Espais en Blanc
- Utilitza espais en blanc per millorar la llegibilitat.
def sum = a + b if (x > y) { println "x is greater than y" }
2.3. Línies en Blanc
- Utilitza línies en blanc per separar blocs de codi lògicament relacionats.
def initialize() { // Initialization code } def execute() { // Execution code }
- Comentaris
3.1. Comentaris de Línia
- Utilitza comentaris de línia per explicar el codi que no és immediatament evident.
def calculateDiscount(price) { // Si el preu és superior a 100, aplica un descompte del 10% if (price > 100) { return price * 0.9 } return price }
3.2. Comentaris de Bloc
- Utilitza comentaris de bloc per a explicacions més llargues o per a documentar seccions de codi.
/* * Aquesta funció calcula el preu total amb impostos. * Paràmetres: * - price: El preu base del producte. * - tax: El percentatge d'impostos a aplicar. * Retorna: * - El preu total amb impostos. */ def calculateTotalPrice(price, tax) { return price + (price * tax) }
- Estructures de Control
4.1. If-Else
- Col·loca les claus d'obertura i tancament en la mateixa línia que la condició.
if (condition) { // Codi a executar si la condició és certa } else { // Codi a executar si la condició és falsa }
4.2. Bucles
- Utilitza la mateixa convenció per a bucles
for
,while
ido-while
.for (int i = 0; i < 10; i++) { println i } while (condition) { // Codi a executar mentre la condició sigui certa } do { // Codi a executar almenys una vegada } while (condition)
- Escriptura de Funcions
5.1. Longitud de les Funcions
- Mantingues les funcions curtes i enfocades en una sola tasca. Si una funció és massa llarga, considera dividir-la en funcions més petites.
5.2. Paràmetres de Funció
- Limita el nombre de paràmetres. Si una funció necessita molts paràmetres, considera encapsular-los en un objecte.
def createUser(String name, int age, String email) { // Codi per crear un usuari }
- Exemples Pràctics
6.1. Exemple de Classe Ben Estructurada
class Person { String name int age Person(String name, int age) { this.name = name this.age = age } void displayInfo() { println "Name: ${name}, Age: ${age}" } } def person = new Person("Alice", 30) person.displayInfo()
6.2. Exemple de Funció Ben Estructurada
def calculateArea(double radius) { final double PI = 3.14159 return PI * radius * radius } def area = calculateArea(5.0) println "Area: ${area}"
- Exercicis Pràctics
Exercici 1: Refactorització de Codi
Refactoritza el següent codi per seguir les convencions d'estil de codi de Groovy:
def calcArea(r){ return 3.14*r*r } def calcCircumference(r){ return 2*3.14*r } println calcArea(5) println calcCircumference(5)
Solució:
def calculateArea(double radius) { final double PI = 3.14159 return PI * radius * radius } def calculateCircumference(double radius) { final double PI = 3.14159 return 2 * PI * radius } println calculateArea(5) println calculateCircumference(5)
Exercici 2: Creació d'una Classe
Crea una classe Car
amb les propietats make
, model
i year
. Afegeix un mètode displayInfo
que imprimeixi la informació del cotxe.
Solució:
class Car { String make String model int year Car(String make, String model, int year) { this.make = make this.model = model this.year = year } void displayInfo() { println "Make: ${make}, Model: ${model}, Year: ${year}" } } def car = new Car("Toyota", "Corolla", 2020) car.displayInfo()
Conclusió
Seguir les convencions d'estil de codi és essencial per mantenir el codi net, llegible i fàcil de mantenir. Aquestes pràctiques no només ajuden a evitar errors, sinó que també faciliten la col·laboració amb altres desenvolupadors. En el proper tema, explorarem tècniques d'optimització del rendiment per assegurar-nos que el nostre codi Groovy sigui no només net, sinó també eficient.
Curs de Programació Groovy
Mòdul 1: Introducció a Groovy
Mòdul 2: Sintaxi i Característiques del Llenguatge Groovy
Mòdul 3: Programació Orientada a Objectes en Groovy
Mòdul 4: Característiques Avançades de Groovy
Mòdul 5: Groovy en la Pràctica
- Entrada/Sortida de Fitxers
- Treballant amb XML i JSON
- Accés a Bases de Dades
- Desenvolupament Web amb Groovy
Mòdul 6: Proves i Depuració
Mòdul 7: Ecosistema i Eines de Groovy
- Eina de Construcció Gradle
- Framework de Proves Spock
- Framework Grails
- Altres Llibreries i Eines de Groovy
Mòdul 8: Millors Pràctiques i Temes Avançats
- Estil de Codi i Convencions
- Optimització del Rendiment
- Consideracions de Seguretat
- Concurrència en Groovy