Back

Best practices


Přijměte standardy a principy a dodržujte je.

Kód se pak snadněji udržuje a také se zlepšuje jeho čitelnost a konzistence.

Pokud nevíte, jak napsat specifickou část kódu, tak zkuste trochu hledat - ponořte se hlouběji do codebase Laravelu, procházejte repozitáře s hodně hvězdičkami na GitHubu, a nebo prozkoumejte zdrojový kód znamých balíčků.

1"Konzistence je klíč" - Spatie

Raději mít duplicitní kód, než špatnou abstrakci.

Pokud narazíte, oprava špatné abstrakce Vás může stát hodně času, protože může být použita na mnoha místech a mohou se na ni vázat další věci, které bude potřeba přepsat.

Je lepší počkat až budete mít jistotu ohledně abstrakce a pak se pustit do refaktorování.


Držte pokrytí testy co nejvyšší.

Ideální pokrytí je vyšší než 70%. My konkrétně se snažíme, aby naše aplikace byly pokryty alespoň z 80%.

1php artisan test --coverage --min=80

Používejte statickou analýzu k udržení vysoké kvality kódu.

My používáme PHPStan, který za nás odhaluje chybějící typy a návratové hodnoty.

1./vendor/bin/phpstan

Používejte Artisan CLI k vytváření tříd.

Artisan generuje třídy ze šablon a tím Vás nutí dodržovat danou strukturu.

1php artisan make:migration CreateProductsTable
2php artisan make:controller ProductController

Zjednodušte svou business logiku pomocí akcí.

Tyto třídy jsou zodpovědné pouze za jednu jedinou úlohu, což vede k čistšímu a srozumitelnějšímu kódu pro ostatní.

1class VerifyUserAction
2{
3 /**
4 * Run the action.
5 */
6 public function run(): void
7 {
8 //
9 }
10}

Seskupujte třídy do podsložek podle typu.

Struktura složek je čistší a snadnější na udržování.

1- Actions/User/VerifyUserAction.php
2- Actions/User/BanUserAction.php
3 
4- Actions/Order/CreateOrderAction.php
5- Actions/Order/ConfirmOrderAction.php
6- Actions/Order/CancelOrderAction.php

Držte metody controllerů krátké.

Controllery jsou zodpovědné za jednu hlavní věc - vrácení odpovědi. Neměly by obsahovat žádnou významnou logiku.

1/**
2 * Store a newly created resource in storage.
3 */
4public function store(StoreUserRequest $request): JsonResponse
5{
6 $user = User::query()->create($request->validated());
7 
8 return response()->json($user);
9}

Modely by měly obsahovat pouze věci související s databází.

Nepište do nich rozsáhlou business logiku, ta by měla být raději napsána v třídách Support nebo Action.


Nikdy neupravujte databázi natvrdo, vždy používejte migrace.

Migrace Vám umožňují sdílet schéma databáze mezi členy týmu a mezi prostředími.

Jsou také vaším verzováním databáze. Pokud upravíte databázi natvrdo, tak to může vytvořit mnoho problémů, které se budou zpětně špatně hledat. Neexistuje žádný důvod, proč by je někdo neměl používat.

Edit this page

We are hiring!