Việc đặt tên đúng bằng tiếng Anh rất quan trọng để cải thiện khả năng đọc và bảo trì code. Việc tuân thủ các quy ước đặt tên thích hợp là điều cần thiết để hiểu và share code cho các thành viên khác trong team của mọi người.
Ngoài ra em/mình đã tổng hợp bài viết này vào sheet với mục đích giúp mọi người dễ tra cứu khi đặt tên các biến.
Tham khảo thêm tại đây
1. Biến
1.1. Boolean
1.1.1. Cách đặt tên cho các biến kiểm tra xem nó có tồn tại hay không
Quy tắc: Danh từ + exists
Example:
#Kiểm tra xem user_id có tồn tại hay không
user_id_exists
# True → Đã có
# False → Chưa có
1.1.2. Cách đặt tên cho các biến kiểm tra hiển thị
Quy tắc: show + Danh từ
Example:
# Có hiển thị lịch sử mua hàng không
show_purchase_histories
# True → có hiển thị
# False → không hiển thị
1.1.3. Cách đặt tên cho các biến on off chức năng
Quy tắc: Danh từ + enable
Example:
# Chức năng điều chỉnh volumn tự động bật tắt
auto_volume_adjustment_enabled
# True → Chức năng đang bật
# False → Chức năng đang tắt
1.1.4. Cách đặt tên cho các biến kiểm tra bao gồm hoặc không bao gồm
Quy tắc: has/contains + Danh từ
Example:
# Kiểm tra xem có bao gồm các mặt hàng đã mua không
has_purchased_items
# True → Có bao gồm mặt hàng
# False → Không bao gồm mặt hang
1.1.5. Cách đặt tên cho các biến theo hình thức basic
Quy tắc: is + Tính từ
Example:
# Kiểm tra xem có trống koong
is_empty
# True → Có trống rỗng
# False → Không trỗng rỗng
1.2. Không phải boolean.
1.2.1. Cách đặt tên các biến là ngày, giờ
Quy tắc: Động từ + at/on
Example:
# Giờ tạo
created_at
# Ngày xoá
deleted_on
1.2.2. Cách đặt tên các biến thông thường
Quy tắc: Danh từ số nhiều
Example:
# Một tập hợp dữ liệu nhiều như danh sách
# List user id
user_ids
# List lịch sử click
clicked_histories
Quy tắc: Tính từ + Danh từ
Example:
# Thêm mô tả bằng tính từ
# content mới
new_contents
Quy tắc: Đổi sang dạng bị động hoặc dạng V-ing của động từ + danh từ
Example:
# Content được click
clicked_contents
# Quá trình chờ đợi
waiting_process
Quy tắc: Danh từ + Danh từ
Example:
# Tình trạng sản phẩm
item_condition
# condition_of_item: Nếu để tên biến thế này sẽ trở nên dài dòng.
Quy tắc: Danh từ + without/before/after + ~
Example:
# Người dùng trái phép
user_without_permission
# sản phẩm trước khi vận chuyển
item_before_shipping
# Số lượng sản phẩm sau khi vận chuyển
item_quantity_after_shipping
2. Function
2.1. Cách đặt tên function thu thập dữ liệu ( GET )
2.1.1. Get data từ Object
Quy tắc: Get
Example:
class User:
def __init__(
self,
user_id: int,
name: str,
age: int,
):
self.user_id = user_id
self.name = name
self.age = age
# Get user name
def get_name(self):
return self.name
Quy tắc: Select ( Đối với mảng )
Example:
# Danh sách các tin nhắn chưa đọc
def select_unread_messages(messages: list[Message])
2.1.2 Get data từ một vị trí khác như CSDL
Quy tắc: fetch
Example:
# Lấy item từ CSDL
def fetch_items()
Quy tắc: Search ( Sử dụng khi tìm kiếm nhiều Item )
Example:
# Tìm kiếm danh sách sản phẩm có màu sắc và giá
def search_items(items: list[Item], color: str, price: int)
Quy tắc: Find ( Sử dụng khi tìm kiếm một Item )
# Tìm kiếm tệp có tên được chỉ định trong số các tệp và thư mục
def find_file(path, filename):
# Tìm bản ghi trong cơ sở dữ liệu phù hợp với điều kiện đã chỉ định
def find_record(database, condition):
2.1.3. Load File
Quy tắc: Load
Example:
# Tải một file local
def load_file(file_path: str)
Quy tắc: Read (Khi chỉ đọc một dòng)
Example:
# Chỉ lấy một dòng từ tệp đã đọc
def read_line(file: File, row_number: int)
2.1.4. Truy xuất có điều kiện
Quy tắc: Filter
Example:
# Nhận nội dung yêu thích từ danh sách nội dung
def filter_bookmarked_contents(contents: list(Content))
Quy tắc: Extract
Example:
# Chỉ trích xuất giá trị của khóa được chỉ định từ danh sách từ điển
def extract_values(dicts: list[dict], key: str)
2.2. Cách đặt tên Function thay đổi
2.2.1. Chuyển đổi dữ liệu
Quy tắc: to + Danh từ
Example:
class User:
def __init__(
self,
user_id: int,
name: str,
age: int,
):
self.user_id = user_id
self.name = name
self.age = age
# Chuyển đổi từ đối tượng Người dùng sang từ điển
def to_dict(self):
return {'user_id': self.user_id, 'name': self.name, 'age': self.age}
Quy tắc: toggle ( Sử dụng khi chuyển trạng thái )
class Item:
def __init__(
self,
item_id: int,
name: str,
number: int,
is_purchased: bool
):
self.item_id = item_id
self.name = name
self.number = number
self.is_purchased = is_purchased
# Chuyển đổi trạng thái mua hàng
def toggle_purchase_status(self):
self.is_purchased = not self.is_purchased
2.2.2. Cập nhật thông tin (thay đổi bản ghi cơ sở dữ liệu, v.v.)
Quy tắc: Update
Example:
# Cập nhật tổng số tiền thanh toán
def update_total_payment()
2.2.3. Chỉnh sửa một phần
Quy tắc: modify
Example:
# Sửa đổi một phần của chuỗi
def modify_text(text: str, terget_str: str, new_str: str)
2.2.4. Thay thế bằng dữ liệu mới
Quy tắc: change
Example:
class User:
def __init__(
self,
user_id: int,
name: str,
age: int,
):
self.user_id = user_id
self.name = name
self.age = age
# Đổi tên người dùng
def change_name(self, new_name: str):
self.name = new_name
2.2.5. Hoán đổi thứ tự và ký tự
Quy tắc: replace
Example:
# Thay thế item cũ bằng item mới trong danh sách item
def replace_old_items(items: list[Item], new_item: Item, old_item: Item)
2.2.6. Khôi phục lại trạng thái ban đầu.
Quy tắc: restore
Example:
# khôi phục trạng thái về trạng thái ban đầu
def restore_state()
2.2.7. sửa dữ liệu sai
Quy tắc: correct
Example:
def correct_event_start_date(events: list[Event], correct_date: date)
2.2.8. Kích hoạt
Quy tắc: enable
Example:
class Config:
def __init__(
self,
auto_volume_adjustment_enabled: bool
...
):
self.auto_volume_adjustment_enabled = auto_volume_adjustment_enabled
...
# Bật chức năng điều chỉnh âm lượng tự động
def enable_auto_volume_adjustment():
self.auto_volume_adjustment_enabled = True
2.2.9. Vô hiệu hoá
Quy tắc: disable
Example:
def __init__(
self,
auto_volume_adjustment_enabled: bool
...
):
self.auto_volume_adjustment_enabled = auto_volume_adjustment_enabled
...
# Tắt chức năng điều chỉnh âm lượng tự động
def disable_auto_volume_adjustment():
self.auto_volume_adjustment_enabled = False
2.2.10. Áp dụng theo role
Quy tắc: apply
Example:
# Áp dụng quy tắc xác thực
def apply_validation()
2.3. Quy tắc đặt tên cho funtion add
2.3.1. Thêm data vào CSDL
Quy tắc: add
Example:
# Thêm bản ghi mới vào bảng (cơ sở dữ liệu)
def add_record() # add thêm vào cấu trúc dữ liệu như bộ sưu tập và danh sách ngoài cơ sở dữ liệu.
Quy tắc: insert
Example:
# Thêm bản ghi mới vào bảng (cơ sở dữ liệu)
def insert_record() # Chèn dữ liệu vào cơ sở dữ liệu
2.3.2. Thêm dữ liệu vào mảng
Quy tắc: append
Example:
# Thêm mặt hàng vào cuối danh sách sản phẩm
def append_item(items: list[Item], additional_item: Item)
Quy tắc: prepend
Example:
# Thêm một mục vào đầu danh sách sản phẩm
def prepend_item(items: list[Item], additional_item: Item)
Quy tắc: insert
Example:
# Thêm các mục ở bất cứ đâu trong danh sách sản phẩm
def insert_item(items: list[Item], additional_item: Item, index: int)
2.3.3. Kết hợp nhiều dữ liệu
Quy tắc: Merge
Example:
# Tập hợp một danh sách các sản phẩm
def merge_items(kids_items: list[Item], senior_items: list[Items])
2.4. Quy tắc đặt tên cho function tạo.
2.4.1. Tạo ra thứ gì đó dựa trên các quy tắc (chẳng hạn như khi tạo ra thứ gì đó dựa theo chương trình)
Quy tắc: generate
Example:
# tạo mật khẩu ngẫu nhiên
def generate_password()
2.4.2. Tạo ra thứ gì đó mới (Tạo từ số 0 - chưa có gì)
Quy tắc: create
Example:
# Tạo dataframe trống với các cột được chỉ định
def create_empty_dataframe(columns: list[str])
2.5. Quy tắc đặt tên cho function xoá.
2.5.1. Khi xóa dữ liệu (không thể khôi phục)
Quy tắc: delete
Example:
class User:
def __init__(
self,
user_id: int,
name: str,
age: int,
):
self.user_id = user_id
self.name = name
self.age = age
def delete(slef):
del self
2.5.2. Khi xóa dữ liệu khỏi một vị trí có thể truy cập được (có thể thể khôi phục)
Quy tắc: Remove
Example:
# Xóa người dùng trái phép
def remove_denied_user
2.5.3. Khi làm trống nội dung (bản thân các đối tượng và biến cha mẹ không biến mất)
Quy tắc: Clear
Example:
Làm trống danh sách dấu trang
def clear_bookmarks
2.5.4. Khi bạn muốn hủy hoàn toàn một đối tượng (hủy nó để không thể sử dụng lại hoặc đọc được)
Quy tắc: destroy/dispose
Example:
# phá hủy hoàn toàn session
def destroy_session()
# Giải phóng hoàn toàn bộ nhớ
def dispose_memory()
2.6. Cách đặt tên cho các function validate
2.6.1. Khi kiểm tra xem các yêu cầu và hiệu suất có được đáp ứng hay không
Quy tắc: validate
Example:
# Kiểm tra xem giới hạn có bị vượt quá không
def validate_price(item: Item, max_price: int)
2.6.2. Kiểm tra xem có hoạt động chính xác không
Quy tắc: Verify
Example:
# Kiểm tra xác thực
def verify_authentication()
2.7. Cách đặt tên cho các function Permission
2.7.1. Function cấp phép
Quy tắc: allow
Example:
# cho phép truy cập
def allow_access()
2.7.2. Phê duyệt ứng dụng
Quy tắc: accept
Example:
# Phê duyệt ứng dụng
def accept_application()
2.7.3. Trao quyền cho người dùng
Quy tắc: grant
Example:
# Cấp cho người dùng quyền chỉnh sửa văn bản
def grant_user_edit_text()
2.8. Cách đặt tên cho các function denided ( Từ chối )
2.8.1. Từ chối ứng dụng
Quy tắc: refuse/reject/deny
Example:
def refuse_application() #Được sử dụng là trái lại của accept
def reject_application() # Được sử dụng là trái lại của accept. Được sử dụng mạnh hơn refuse
def deny_application() # Được sử dụng là trái lại của allow
2.8.2. Thu hồi quyền
Quy tắc: revoke
Example:
# Thu hồi quyền
def revoke_permission()
2.9. Đặt tên function thông thường
Đặt tên chỉ có động từ hoặc động từ + danh từ
Example:
# Trong trường hợp được định nghĩa trong class và đối tượng rõ ràng thì chỉ cần có động từ là đủ
# tạo message
class MessageCreator:
...
def create(self):
...
return message
# không sử dụng create_message
# Khi đối tượng được xác định
# Kết hợp các string
def join_strings(first_text:str, second_text: str)
3. Các cách đặt tên cho class
3.1 Tạo một class bằng cách kết nối hai từ
Quy tắc: tính từ + danh từ hoặc danh từ + danh từ
Example:
# tập tin đính kèm
class AttachedFile
# Lịch sử nhấp chuột
class ClickHistory
3.2. Cách đặt tên class xử lý nguồn dữ liệu
3.2.1. Server Client
Quy tắc: Danh từ + Client
Example:
# Class dùng để vận hành và giao tiếp với BigQuery
class BigQueryClient
3.2.2. ApiGateway
Quy tắc: Danh từ + gateway
Example:
# Quản lý các hoạt động liên quan đến gateway
class TimelineGateway
3.2.3. Lưu dữ liệu vào cơ sở dữ liệu
Quy tắc: Danh từ + store
Danh từ + storage
Example:
class ContentStore
class ContentStrage
3.2.4. Cache
Quy tắc: Danh từ + cache
Example:
# lịch sử bộ đệm
class ClickHistoryCache
3.2.5. Lưu log
Quy tắc: Danh từ + log
Example:
# Lưu lịch sử nhấp chuột
class ClickHistoryLog
3.2.6. Lưu lịch sử
Quy tắc: Danh từ + history
Example:
# Lưu lịch sử nhấp chuột
class ClickHistory
3.2.7. lưu trữ dữ liệu setting
Quy tắc: Danh từ + Configuration/Preference/SettingExample:
# Lưu cài đặt hệ thống
class RecommendationConfiguration
class RecommendationPreference
class RecommendationSetting
3.3. Xử lý data
3.3.1. Thu hẹp dữ liệu
Quy tắc: Danh từ + filter
# Loại trừ nội dung không đáp ứng các điều kiện
class ContentFilter
3.3.2. Trích xuất dữ liệu
Quy tắc: Danh từ + Extractor
Example:
# Trích xuất nội dung phù hợp với điều kiện
class ContentExtractor
3.3.3. Định dạng dữ liệu
Quy tắc: Danh từ + Formatter
Example:
# Định dạng dữ liệu message
class MessageFormatter
3.4. Quản lý data source
3.4.1. Đóng gói DB, giao tiếp http, bộ đệm, v.v.
Quy tắc: Danh từ + Provider
Example:
# Cung cấp dữ liệu liên quan đến dòng thời gian
class TimelineProvider
3.4.2. Quản lý dữ liệu ( model )
Quy tắc: Danh từ + Manager
Example:
# quản lý cài đặt
class ConfigurationManager
3.4.3. Tải dữ liệu
Quy tắc: Danh từ + Loader
Example:
# tải nội dung bookmark
class BookmarkedContentLoader
3.4.4. Xuất Log (hoặc cung cấp quyền truy cập vào Class Log)
Quy tắc: Logger
Example:
#Xuất log sử dụng API
class APIUsageLogger
3.4.5. Lưu thiết lập
Quy tắc: Danh từ + Configurator
Example:
# Lưu cài đặt ứng dụng
class ApplicationConfigurator
3.4.6. Thực hiện các thay đổi đối với cấu trúc dữ liệu (nâng cấp phiên bản, v.v.)
Quy tắc: Danh từ + Migrator
Example:
# Thay đổi cấu trúc dữ liệu json
class JSONStructureMigrator
3.5. Xử lý không đồng bộ
3.5.1. Thực hiện một loạt các hoạt động không đồng bộ
Quy tắc: Danh từ + Job/Task
Example:
# Quản lý các quy trình không đồng bộ để tải lên tệp và dữ liệu
class UploadJob
class UploadTask
3.5.2. Thực hiện công việc hoặc nhiệm vụ nhất định
Quy tắc: Danh từ + Runner
Example:
# Thực hiện quá trình upload file và dữ liệu
class UploadJobRunner
class UploadTaskRunnner
3.6. Đặt tên class thông thường
Quy tắc: Danh từ
Example:
class User
class Content
class Item
Những điểm cần lưu ý.
Tránh sử dụng danh từ không đếm được càng nhiều càng tốt
Sử dụng danh từ đếm được nhiều nhất có thể vì bạn có thể phân biệt giữa một đối tượng và một tập hợp nhiều phần dữ liệu, chẳng hạn như danh sách, chỉ bằng cách sử dụng dạng số ít và số nhiều.
Example:
# ✕
user_data
# ◯
user_property
user_attribute
Không sử dụng phủ định kép
Khi các phủ định chồng chéo lên nhau, việc hiểu Đúng và Sai sẽ trở nên khó hiểu. Hãy cẩn thận khi sử dụng tính từ phủ định.
Example:
# ✕
if not disabled:
...
# ◯
if enabled:
Đặt tên class ở số ít
Việc sử dụng số nhiều trong tên class sẽ làm cho tên biến khó hiểu, chẳng hạn như trong trường hợp tập hợp.
# ✕
class Cotents
contents
contents_list
# ◯
class Cotent
content
contents
Sử dụng các tính từ phủ định
Thêm not ở trước sẽ dẫn đến trường hợp bị rối loạn.
# ✕
not_allowed
# ◯
denied
Không sử dụng nhiều động từ:
# ✕
is_allow
notify_expire
# ◯
is_allowed
notify_expiration
4. Sơ đồ cách đặt tên
4.1. Sơ đồ cách đặt tên cho biến
4.2. Sơ đồ cách đặt tên cho Function
4.3 Sơ đồ cách đặt tên cho Class
5. AWS Database, RDS, ELB
5.1. Database
Database (Cơ sở dữ liệu):
Mô tả: Database là nơi lưu trữ và quản lý dữ liệu của ứng dụng hoặc hệ thống. AWS cung cấp nhiều loại cơ sở dữ liệu khác nhau, bao gồm cơ sở dữ liệu quan hệ (SQL) và cơ sở dữ liệu phi quan hệ (NoSQL).
Ví dụ: Amazon DynamoDB (NoSQL), Amazon RDS (MySQL, PostgreSQL, Oracle, SQL Server).
Quy tắc đặt tên:
Đặt tên sao cho nó phản ánh mục đích của cơ sở dữ liệu hoặc ứng dụng.
Hạn chế sử dụng ký tự đặc biệt hoặc khoảng trắng để tránh vấn đề về tính tương thích và khả năng quản lý.
Ví dụ: ecommerce_products_db, blog_comments_db #O
ecommerce@_products_db #X
5.2. RDS
Mô tả: RDS là một dịch vụ quản lý cơ sở dữ liệu quan hệ, giúp người dùng dễ dàng triển khai, quản lý và mở rộng các cơ sở dữ liệu quan hệ trên AWS mà không cần quan tâm đến việc quản lý hạ tầng dưới lying.
Chức năng:
Tự động sao lưu và phục hồi dữ liệu.
Tự động cấu hình và triển khai các cơ sở dữ liệu.
Hỗ trợ nhiều loại cơ sở dữ liệu như MySQL, PostgreSQL, Oracle, SQL Server.
Lợi ích: Giảm gánh nặng quản lý cho người phát triển và quản trị viên cơ sở dữ liệu.
Quy tắc đặt tên:
Bao gồm loại cơ sở dữ liệu
Khi có thể, thêm tên loại cơ sở dữ liệu vào tên (ví dụ: "mysql-", "postgres-", "oracle-").
Sử dụng biểu diễn ngắn gọn: Đặt tên một cách ngắn gọn nhưng vẫn phản ánh rõ mục đích sử dụng cơ sở dữ liệu.
Ví dụ: mysql-production, postgres-dev, blog-db, inventory-rds
5.3. ELB
Mô tả: ELB là một dịch vụ giúp phân phối lưu lượng mạng đến nhiều máy chủ (instances) để cải thiện khả năng mở rộng và đảm bảo tính sẵn sàng cao cho ứng dụng.
Chức năng:
Chia sẻ lưu lượng mạng đến nhiều instances để cân bằng tải.
Tự động giảm áp lực và chuyển hướng traffic khỏi instances có vấn đề.
Hỗ trợ hai loại ELB: Application Load Balancer (ALB) và Network Load Balancer (NLB).
Lợi ích: Tăng tính sẵn sàng và hiệu suất của ứng dụng, giảm rủi ro khi một máy chủ gặp sự cố.
Quy tắc đặt tên:
Mô tả chức năng hoặc loại:Thêm vào tên mô tả về chức năng hoặc loại của ELB (ví dụ: "web-", "app-", "internal-").
Tạo tên duy nhất: Đảm bảo rằng tên của ELB là duy nhất trong phạm vi của tài khoản AWS của bạn.
Sử dụng tiền tố cho môi trường: Đặt tên môi trường (ví dụ: "prod-", "dev-", "test-") để phân biệt giữa các môi trường khác nhau.
Hạn chế sử dụng ký tự đặc biệt: Tránh sử dụng ký tự đặc biệt có thể gây khó khăn trong quản lý.
Mô tả chức năng hoặc loại:
Ví dụ: web-app-elb, internal-api-elb.
Tên duy nhất:
Ví dụ: prod-loadbalancer, test-elb.
Tiền tố cho môi trường:
Ví dụ: prod-web-elb, dev-app-elb.
Đặt tên services
Phải có môi trường đầu tiên
Trong AWS có nhiều dự án -> phải có tên dự án
Phân loại Service, Platform: Web, App, CMS, …
Tên viết tắt của Service ( Options )
Ví dụ: prod-tsalad-cms-elb, prod-tsalad-cms-ec2, …
Đặt tên IAM User:
Tên tổ chức + tên người dùng
Ví dụ: caeruxlab-longtd,...