Backend Conventions
Estimated reading: 7 minutes
526 views
Cấu trúc 1 Solution
Ví dụ cấu trúc code của một dịch vụ có mã là DichVu
DichVu.API.sln
*Startup.cs sẽ có thể loại bỏ và tổng hợp tất vào Program.cs như các example net 6, net 7
** Một số DI Config trong DbContext hoặc Service này tương lai có thể remove. Base core sẽ tự động thực hiện DI.
Convention
Quy tắc đặt tên biến:
- Array: arr…, List: lst…, IEnumerable: ie…
- Boolean: is…, has…, can…
- Dictionary: dic…
- MethodResult: res…, result…
- Enum: Enum…
- DataSource: DataSource…
- Các trường [key] phải đặt theo quy tắc: Id…
- Các trường hợp khác đặt tên biến theo camel case. Ví dụ: lstDonVi, soThangTinhLuong, …
- Không đặt tên biến vô nghĩa như: a, b, c, item, …
- v..v…
Quy tắc đặt tên file:
- Đặt tên file, namespace, class, struct, method, interface, … (và tất cả những thứ khác trừ các biến dữ liệu ở trên) phải viết theo pascal case
- Đặt tên Interface phải có chữ I ở đầu
Quy tắc xử lý logic, validation, query:
- Giảm thiểu logic for, if lồng nhau. Ưu tiên tách hàm hoặc tìm phương án logic xử lý return ngay khi hợp lệ.
- Viết truy vấn sử dụng tối giản nhất có thể. Luôn luôn áp dụng các phương thức async await. Tránh xử lý và lấy dữ liệu quá nhiều ở Select dẫn tới ảnh hướng hiệu năng.
- Hạn chế clone lại logic, thay vào đó xây dựng các hàm nhỏ nhằm tái sử dụng lại
- Trong nội bộ method nếu sử dụng một dữ liệu set cứng => chuyển về constants của class hoặc internal method
- Đối với các service dễ bị inject chồng chéo nhau. A inject B, B inject C, C inject A v..v… Hạn chế bằng cách tạo wrapService hoặc đơn giản trong method sử dụng EngineContext. Cú pháp EngineContext.Current.Resolve<INeedSerrvice>(IServiceScope scope = null)
- v..v…
Quy tắc comment:
- Các khối code, method có mục đích chung luôn tách biệt giữa các region:
– Region Constants: Tập hợp các constants class. Lưu ý các thuộc tính phải viết hoa toàn bộ, giữa các từ nối nhau bằng dấu “_”
– Region Fields: Tập hợp các service DI có thể có (thường để private readonly …)
– Region Properties: Các prop public
– Region Ctor: Init Constructor
– Region Ultilities: Các method dạng statics khai báo dùng chung trong Class
– Region Interface ABC, Methods v..v…: Là tập hợp các method phục vụ mục đích chung theo đúng implement interface hoặc là global region methods - Các thuộc tính, hàm tạo, phương thức, interface v..v… luôn luôn phải comment ghi chú về thông tin cấu hình tham số truyền vào. Đặc biệt với những logic code xử lý phức tạp luôn note ghi chú để người sau đọc lại.
- Đối với các Interface không bắt buộc cref tới các class nhưng khuyến khích nên có
- v..v…