Skip to main content

Quy định code

  • Sử dụng Repository thay cho Model.

  • Chạy file migration và seeder bằng lệnh (không nhập trực tiếp trên database)

  • Chú ý thứ tự trước sau của các file migration để tránh lỗi liên kết bảng khi tạo database

  • Cách đặt tên:

    • Tên class đặt theo PascalCase, ví dụ: UserClass, CategoryClass, …
    • Tên function trong class sử dụng camelCase, ví dụ: getUser, getCategory…
    • Tên function trong helpers sử dụng underscore, ví dụ: is_array, check_exists, ...
    • Tên biến cũng sử dụng camelCase, ví dụ: loginUser, categoryList, …
    • Tên hằng số thì viết in hoa và cách nhau bởi dấu gạch dưới, ví dụ: DISCOUNT_PERCENT, LIMIT_RATE, …
    • Tên bảng, tên cột trong Database sử dụng underscore, ví dụ: oauth_clients, oauth_refresh_tokens, …
  • Code đồng nhất với các code đã có trước đó

  • Đặt tên gọn, dễ hiểu và đúng nghĩa với phần đang xử lý

  • Sử dụng event và listener để tách code riêng cho các module, tương tác database với module nào thì code chỉ nằm trong module đó

  • Mỗi task xử lý cho 1 chức năng (thêm, sửa, xóa, …)

  • Xóa những đoạn code không sử dụng

  • Sử dụng transaction/commit/rollback với các xử lý task xử lý lưu nhiều bảng dữ liệu hoặc có các event đi kèm

  • Thông báo lỗi phải sử dụng file language

  • Tạo dữ liệu trong file config đối với các giá trị cố định

  • Viết docs đầy đủ cho từng tham số API, cập nhật khi có thay đổi

  • Viết mô tả các phương thức (function) nằm ngoài API (trong helpers hoặc trong các Class bổ sung), ghi rõ chức năng, tham số truyền vào, kiểu dữ liệu, dữ liệu trả về

  • Tối ưu truy vấn database, tránh lấy 1 dữ liệu nhiều lần

  • Xử lý các dữ liệu phát sinh nhiều trong tương lai cần dùng chunk thay cho get, ví dụ như danh sách đơn hàng, khách hàng, …

  • Một phương thức (function) phức tạp được sử dụng nhiều lần và phải viết ở nhiều nơi thì nên đưa vào file helpers, model hoặc class bổ sung

  • Khai báo kiểu dữ liệu các field trong casts của model

  • Thêm các phương thức quan hệ (relationship) vào model