Code, DB, Git Convention 2024

Chất lượng của code có thể được cân nhắc dựa trên nhiều khía cạnh và tiêu chí khác nhau, không chỉ định dạng mà các lập trình viên còn phải tuân theo những quy ước nhất định tuỳ theo từng ngôn ngữ lập trình và nền tảng nhất định.

Anh em developer hãy ghi nhớ

  • Suy nghĩ đơn giản và viết code đơn giản nhất có thể.
  • Luôn dọn code sạch hơn lúc ta nhận nó lần đầu, dù là của mình hay của ai khác.
  • Luôn tìm ra nguyên nhân gốc rễ của vấn đề.

Quy tắc chung

  • Tất cả các giá trị hằng số cần khai báo trước, không fix hard code. Hằng số được đặt tên dạng UPPER_CASE
  • Router link page/ api: path/ten-page
  • Không dùng comment để giải thích code hoặc chú thích những sự thật hiển nhiên, comment cảnh báo hậu quả
  • Mỗi hàm không được vượt quá 5 tham số. Tốt nhất lập trình viên nên giữ dưới mức 3 hoặc bằng 3.
  • Tên hàm là động từ, tên biến là danh từ
  • Tuyệt đối không viết tắt, hoặc chung chung không có nghĩa. VD: $x,y,z… hoặc $function1(), $getBG()…
  • Số ký tự tối đa trên 1 dòng là 120

Các quy ước khác

Backend: PHP

  • Code tuân thủ chuẩn PSR-12 của PHP (Căn lề, thụt dòng, khai báo,…)
  • Viết và sử dụng các helpers ở file chung của project (vd: Next-landing đang sử dụng file utils) nếu có thể, lưu ý tránh việc project có nhiều helpers có chức năng giống nhau
  • Khi sử dụng Repository Design Pattern trong project:
    • Không query trực tiếp thông qua model
    • Khai báo function ở interface trước khi sử dụng trong repo
    • Tái sử dụng những function có sẵn trong base repo
    • Đưa function mới vào base repo nếu có khả năng tái sử dụng được
  • Controller name theo chuẩn PascalCase, là danh từ số ít, kết thúc bằng “Controller”. VD: BlogController, AuthController, UserController… Không nên sử dụng UsersController (Danh từ số nhiều), hoặc Users (thiếu hậu tố Controller)

NodeJS, NestJS, JavaScript

  • Biến trong Javascript viết theo kiểu Camel var tenBien = ..

ReactJS/NextJS

  • Class được viết trong CSS Module của React/NextJS viết theo Camel className
  • Các Interface của Type Script có property viết theo kiểu Snake ten_thuoc_tinh
  • Đặt tên biến, hàm, Type, Interface theo quy chuẩn Camel Case
  • Code theo structure của project (cấu trúc thư mục, thống nhất công nghệ sử dụng)
  • Sử dụng let, const thay vì dùng var
  • Sử dụng các hằng số: Sử dụng các hằng số để lưu trữ các giá trị không thay đổi trong source code. Đặt tên hằng số bằng chữ in hoa và sử dụng dấu gạch dưới (_) (file chứa hằng số theo cấu trúc của dự án)
  • Sử dụng Enums//không nên if (type === 1) { //14+ } if (type === 2) { //normal creator } //nên dùng enum CreatorType { my_bae = 1, normal } if (type === creatorType.my_bae) { // }
  • Sử dụng interface khai báo kiểu dữ liệu, hạn chế tối đa dùng any (file chứa interface theo cấu trúc của dự án)
  • Số ký tự tối đa trên 1 dòng là 120//nên dungùng <Button with={100} height={100} onclick={() => handleClick()} color={'red'} border={10} ... /> thay vì <Button with={100} height={100} onclick={() => handleClick} ... /> //>120 ký tự

HTML, CSS

  • Class và id css theo chuẩn .ten-class #id-element
  • Tất cả code HTML sử dụng lower case
  • Tham khảo thêm tại:

HTML Style Guide and Coding Conventions

Database

  • Tên là danh từ tiếng Anh, tuyệt đối không được sai chính tả
  • Chỉ dùng lower_case, và dấu _ để nối các từ
  • Không viết tắt, không dùng từ khóa của SQL. VD: nên sử dụng *updated_at* thay cho date
  • Ngắn gọn, không dài quá 64 kí tự.
  • Table/Tên bảng:
    • DB table chỉ dùng danh từ số nhiều. VD: customers thay cho customer
    • Pivot table sử dụng danh từ số ít để nối tên các bảng, và theo thứ tự bảng chữ cái.
    • Đặt prefix cho các table liên quan. VD: post_user, task_user … Không nên sử dụng users_posts, UsersPostscatalog_category catalog_product
    • Thêm suffix _tmp cho các table dùng tạm trong tính toán nhưng không xóa. VD: catalog_product_price_tmp
    • Thêm prefix tmp_ cho các table dùng tạm, có thể xóa. VD: tmp_im_calculating
  • Tên cột:
    • Tránh thêm tiền tố không cần thiết. VD: product.name thay cho product.product_name
    • Thêm prefix is_ cho các field dạng YES/NO
    • Nên lưu các thời điểm thay đổi dữ liệu với từng record: created_at, updated_at, deleted_at (chú ý không phải là create_on, created_on… → Sai chính tả)
    • Không đặt tên chứa kiểu dữ liệu. VD: ~~int_return_code~~
  • Foreign Keys: Tên FK được kết hợp từ tên field và tên table mà nó tham chiếu tới, kết thúc bằng ‘_id’. VD: customer_id, order_code
  • Indexes: Thêm prefix idx_ ở đầu

Git

  • Tên branch:
    • Tính năng mới: feature/[Jira-ticket-code]-summary. VD: feature/KMS-888-fan-checkout
    • Hot fix bug production: hotfix/[Ticket-code]-explain. VD: hotfix/KMS-998-fix-bug-invalid-register
    • Release: release/version-name
    • Fix conflict: [originBranchName]-fix-conflict-[targetBranchName]. VD: feature/KMS-222-fix-dev
  • Commit: [Jira-ticket-code]-summary-description-code. VD: “[KMS-888] add UI fan checkout”

Link tham khảo:

https://www.w3schools.com/html/html5_syntax.asp

https://en.wikipedia.org/wiki/Camel_case

https://www.php-fig.org/psr/psr-12/

kinhnghiemlaptrinh.com

Trả lời

Email của bạn sẽ không được hiển thị công khai.