Back

Obecné


Úvod

Při psaní kódu je důležité mít na paměti některé obecné zásady a standardy, které mohou pomoci zlepšit jeho kvalitu a čitelnost.

Jmenné konvence

Pojmenování tříd

Třída Pojmenování Příklad
Action název akce s příponou "Action" CreateUserAction, DeleteProductAction, UpdateCategoryAction
Command název příkazu s příponou "Command" GenerateReportCommand, ImportDataCommand, ExportDataCommand
Controller jednotné číslo s příponou "Controller" UserController, ProductController, CategoryController
Data jednotné číslo s příponou "Data" UserData, ProductData, CategoryData
Event název eventu s příponou "Event" UserCreatedEvent, OrderCreatedEvent, OrderShippedEvent
Exception jednotné číslo s příponou "Exception" ValidationException, NotFoundException, DuplicateEntryException
Interface přídavné jméno/podstatné jméno bez přípony Loggable, Configurable, Exportable
Job název jobu s příponou "Job" SendEmailJob, ProcessPaymentJob, GenerateReportJob
Mail název mailu bez přípony InvoicePaid, OrderShipped, PasswordReset
Middleware název middlewaru bez přípony Authentication, RateLimit, Cors
Model jednotné číslo bez přípony User, Product, Category
Notification název notifikace bez přípony InvoicePaid, OrderShipped, PasswordReset
Observer název modelu s příponou "Observer" UserObserver, ProductObserver, CategoryObserver
Policy název modelu s příponou "Policy" UserPolicy, ProductPolicy, CategoryPolicy
Provider název provideru s příponou "Provider" PaymentProvider, StorageProvider, EmailProvider
Request název metody s názvem modelu s příponou "Request" StoreUserRequest, UpdateProductRequest, DestroyCategoryRequest
Rule název pravidla bez přípony ValidPhoneNumber, ValidBankAccount, Uppercase
Scope název scopu s příponou "Scope" ActiveScope, NewScope, TrendingScope
Support název supportu bez přípony OpeningHours, Cart, Table
Trait přídavné jméno/předpona "with" bez přípony Sortable, Searchable, Filterable, WithForm, WithSorting, WithFileUploads

Pojmenování v kódu

Entita Pojmenování Příklad
Method camelCase store, massDestroy, run
Model Property snake_case is_active, created_at
Class Property camelCase $isActive, $createdAt
Variable camelCase $isActive, $createdAt
Route lowercase - množné číslo users, products, categories
Route name snake_case - s 'dot' notation users.show, products.index, categories.create

Pojmenování v databázi

Entita Pojmenování Příklad
Table snake_case - množné číslo users, products, categories
Pivot table snake_case - název modelů abecedně category_product, order_user
Table column snake_case - bez prefixu tabulky title, price, description
Primary key id id
Foreign key snake_case - název modelu s příponou "_id" user_id, product_id, category_id

Struktura

Struktura třídy

Při organizaci kódu v třídě je nejlepší dodržovat následující pořadí:

  • Traits
  • Constants
  • Static properties
  • Properties
  • Static methods
  • Methods
  • Abstract methods

Je také důležité každou část řadit následujícím způsobem:

  • public
  • protected
  • private
1use Trait;
2 
3const FOO = 1;
4 
5public static int $a;
6 
7public int $b;
8protected int $c;
9private int $d;
10 
11public static function methodA() {}
12 
13public function methodB() {}
14protected function methodC() {}
15private function methodD() {}
16 
17abstract public function methodE();

Komentování

Dobře napsané komentáře zvyšují čitelnost a porozumění kódu a slouží jako cenná dokumentace pro budoucí vývojáře, kteří budou chtít kód upravit nebo mu porozumět.

Nicméně, nezapomínejte, že srozumitelný kód je důležitý obecně - komentáře slouží jako dodatečná podpěra a zvyšují kvalitu kódu.

Atributy

Při deklaraci nativních atributů v Laravelu, jako je $fillable, můžete vynechat komentáře a datové typy, protože na tyto atributy se nikdy nebude přistupovat přímo.

1protected $fillable = [];

Vlastní atributy by měly být doplněny datovým typem a také by měly být doplněny komentáři, pokud jejich název není dostatečně samovysvětlující.

1public int $clickCount = 0;
2 
3/**
4 * Count represents the number of clicks.
5 */
6public int $count = 0;

Metody

Ke každé metodě v kódu byste měli poskytnout výstižné komentáře.

1/**
2 * Display a listing of the resource.
3 */
4public function index()
5{
6 //
7}

Kód

Měli byste poskytnout výstižné komentáře ke každé části kódu, která je nejasná, například mnoho podmínek.

Edit this page

We are hiring!