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 |
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.