Skip to content

Instantly share code, notes, and snippets.

@minhphong306
Created April 8, 2026 07:00
Show Gist options
  • Select an option

  • Save minhphong306/53b4896cb8d059e73f1b2d2eec6c641b to your computer and use it in GitHub Desktop.

Select an option

Save minhphong306/53b4896cb8d059e73f1b2d2eec6c641b to your computer and use it in GitHub Desktop.
helper-util.md

Ranh giới giữa HelperUtil (Utility) thường khá mong manh, và tùy vào quy định của từng dự án mà chúng có thể được dùng thay thế cho nhau.

Tuy nhiên, nếu xét về mặt thiết kế phần mềm "chuẩn bài", mình có thể phân biệt dựa trên mục đíchngữ cảnh sử dụng như sau:


1. Sự khác biệt cốt lõi

Đặc điểm Utility (Util) Helper
Tính phụ thuộc Độc lập. Không phụ thuộc vào logic của ứng dụng. Phụ thuộc. Thường gắn liền với một domain hoặc logic cụ thể của ứng dụng.
Phạm vi sử dụng Toàn cục (Global). Có thể bê nguyên file sang dự án khác mà vẫn chạy tốt. Cục bộ (Local). Thường chỉ dùng cho một vài module hoặc trang nhất định.
Mục đích Thực hiện các tác vụ kỹ thuật, xử lý dữ liệu thô. Hỗ trợ thực hiện một logic nghiệp vụ (business logic) phức tạp hoặc lặp lại.

2. Khi nào dùng Utility?

Hãy nghĩ về Utils như những "công cụ đa năng". Chúng giải quyết các bài toán lập trình chung chung mà ngôn ngữ chưa hỗ trợ sẵn hoặc hỗ trợ chưa tiện.

Những thứ thường đặt vào folder utils/:

  • Xử lý Format: Format ngày tháng (Date formatter), format tiền tệ, viết hoa chữ cái đầu.
  • Validation chung: Check email hợp lệ, check số điện thoại, check chuỗi rỗng.
  • Thao tác dữ liệu: Clone object, so sánh 2 mảng, hàm băm (hashing), xử lý LocalStorage.
  • Toán học: Tính toán các công thức chung, random số trong khoảng.

Ví dụ: Hàm formatDate(date, pattern) là một Utility. Dự án nào cũng cần, và nó không quan tâm bạn đang làm app bán hàng hay app quản lý nhân sự.


3. Khi nào dùng Helper?

Helpers thường là những "trợ lý" đắc lực cho một module cụ thể. Nó hiểu về nghiệp vụ của ứng dụng và giúp code ở tầng Logic (Controller/Service) gọn gàng hơn.

Những thứ thường đặt vào folder helpers/:

  • Logic nghiệp vụ: Tính toán giá vé dựa trên độ tuổi khách hàng (gắn với logic của app).
  • Xử lý giao diện (UI Helper): Hàm chuyển đổi trạng thái đơn hàng sang màu sắc tương ứng (ví dụ: PENDING -> màu vàng).
  • Xác thực/Phân quyền: Hàm check xem User hiện tại có quyền chỉnh sửa bài viết này không (canUserEditPost).
  • Template Helper: Các hàm hỗ trợ render dữ liệu cụ thể lên màn hình.

Ví dụ: Hàm calculateMemberDiscount(user) là một Helper. Nó cần biết cấu trúc object user của dự án bạn và quy tắc giảm giá của công ty bạn.


4. Ví dụ thực tế trong QA Automation

Vì em đang làm QA Automation, mình có thể chia như sau để dễ hình dung:

  • utils/:
    • db_client.js: Kết nối Database.
    • api_logger.js: Ghi log API.
    • random_data_gen.js: Tạo string ngẫu nhiên, số ngẫu nhiên.
    • date_util.js: Lấy ngày hiện tại cộng thêm 7 ngày để làm test data.
  • helpers/:
    • login_helper.js: Hàm thực hiện các bước login (điền user, pass, click login) để dùng lại ở nhiều test case.
    • checkout_helper.js: Các bước chọn hàng, thêm vào giỏ, thanh toán.
    • assertion_helper.js: Các hàm so sánh kết quả mong đợi đặc thù cho dự án của em.

Mẹo nhỏ:

Hãy tự hỏi: "Nếu mình mang file này sang một dự án hoàn toàn khác, nó có chạy được không?"

  • Nếu -> Bỏ vào utils.
  • Nếu Không (vì nó cần dữ liệu hoặc logic đặc thù của dự án hiện tại) -> Bỏ vào helpers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment