Semplificare il modo in cui scriviamo il codice è utile per diversi aspetti. In primo luogo, sarà più facile per altri leggere e capire il funzionamento, ma anche per noi stessi quando dovremo leggere lo stesso codice dopo un po’ di tempo.

Come semplificare il codice usando Laravel

Semplificare il codice inoltre aiuta a facilitare la modifica quando nuove funzionalità dovranno essere implementate. In questo articolo non parliamo di SOLID principles o di design pattern, ma pochi piccoli accorgimenti nello specifico che possono rendere la nostra vita e quella dei nostri colleghi, un po’ più facile.

1 – Semplifica i costrutti if/else

 

Quando si scrivono metodi o funzioni che utilizzano istruzioni if/else per verificare una condizione, possiamo ripulire la funzione o il metodo utilizzando la versione abbreviata di un semplice if/else in questo modo:

 

class Order {

 

public function isComplete(): bool {

if ($this->complete === 1) {

return true;

} else {

return false;

}

}

 

// Versione ottimizzata

public function isComplete(): bool {

return $this->complete === 1;

}

}

 

Più in generale, se si restituisce un valore booleano, verifica se anziché eseguire il costrutto if/else riesce a restituire il risultato della condizione dell’if.

 

2 – Usa exists() di Laravel al posto di count()

Quando si esegue una query sul database e si tenta di accedere a un’istanza del modello, a volte le nostre query Eloquent tornano vuote o nulle.

Il primo istinto è controllare se il conteggio dei modelli è 0 e, in caso contrario, se qualcosa esiste… attenzione perché Laravel fornisce un metodo pronto all’uso per verificare se esiste un’istanza del modello.

 

// Da evitare 

Order::where(‘status’, ‘active’)->count() > 0

Order::where(‘status’, ‘active’)->count() === 0

 

// Meglio utilizzare

Order::where(‘status’, ‘active’)->exists()

Order::where(‘status’, ‘active’)->doesNotExist()

 

3 – Usa modelKeys() per ottenere le chiavi primarie anziché pluck()

Quando si accede a un modello e si tenta di ottenere le chiavi primarie o gli ID del modello, il modo più semplice per farlo è utilizzare pluck() per ottenere campi specifici.

Ma se tutto ciò a cui vuoi accedere sono le chiavi del modello o le chiavi primarie e nient’altro (per sincronizzare o collegare forse un altro modello), puoi usare il metodo integrato modelKeys().

 

// In questo modo devi ottenere manualmente le model keys

$user = User::find($id);

$roles = $user->roles()->pluck(‘id’, ‘otherKey’);

 

// Con questo modo invece Eloquent esegue il pluck delle chiavi automaticamente

$user = User::find($id);

$roles = $user->roles()->modelKeys();

 

4 – Evita di creare variabili non necessarie, restituisci valori direttamente

Quando impariamo a programmare, prendiamo l’abitudine di creare variabili per ogni cosa, ed è anche logico volendo. Dobbiamo essere in grado di archiviare e tenere traccia dei dati tra metodi, funzioni e classi, anche se a volte non è necessario creare una variabile che non cambieremo o modificheremo in seguito nel metodo.

 

Semplifica il tuo codice restituendo i valori direttamente quando puoi, come di seguito.

 

// La variabile $data non è necessaria

public function create() {

$data = [

‘source’ => ‘web’,

‘code’ => Str::random(6),

];

$data->data = json_encode($data);

return $this->data;

}

 

// Eliminiamo la variabile $data

public function create() {

$data->data = json_encode([

‘source’ => ‘web’,

‘code’ => Str::random(6),

]);

 

return $this->data;

}

 

5 – Sfrutta le collections di Laravel anziché manipolare gli array manualmente

Le collections di Laravel hanno decine di metodi disponibili che semplificano molti processi che altrimenti dovrebbero essere eseguiti manualmente con uno o più array. Prendi, ad esempio, l’aggiunta di un elemento alla fine di un array:

 

// Usando array_push di PHP

$array = [1,2,3,4];

$val = [5];

array_push($array, $val);

 

// Usando Collection

$collection = collect([1,2,3,4]);

$collection->push(5);

 

Funzionalmente, questi due approcci sono gli stessi, ma l’uso delle raccolte di Laravel ti dà accesso a una moltitudine di metodi che puoi eseguire su singole raccolte o oggetti in un’unica raccolta. Ecco alcuni esempi:

 

$collection = collect([7,2,2,1,4]);

 

$sorted = $collection->sort();

// [1,2,2,4,7]

$min = $collection->min();

// 1

$min = $collection->max();

// 7

$min = $collection->duplicates();

// [1 => 2, 2 => 2]

 

Questi sono solo alcuni dei metodi disponibili nelle collection di Laravel  che svolgono attività che gli array non possono eseguire senza una funzione personalizzata o sono difficili da eseguire in modo semplice. Vedi la documentazione ufficiale.