Một mẹo đặt tên đơn giản giúp ngăn chặn sự xuống cấp của mã nguồn

Đừng đặt tên các class của bạn là Service, Manager, hay Handler nữa.

Những cái tên này rất mơ hồ. Chúng vô tình cho phép những thiết kế tồi tệ tồn tại.

Nếu bạn đặt tên một class là UserService, bạn có thể đưa bất cứ thứ gì liên quan đến người dùng vào trong đó. Bạn có thể thêm việc đặt lại mật khẩu, phân quyền, và tính toán giảm giá. Tất cả những việc này đều liên quan đến người dùng, nên cái tên đó có vẻ rất hợp lý.

Nhưng những tác vụ này có các quy tắc và phụ thuộc (dependencies) khác nhau. Một UserService duy nhất sẽ trở thành một mớ hỗn độn khổng lồ.

Thay vào đó, hãy thử cách đặt tên theo tác nhân (agentive naming). Hãy sử dụng những cái tên mô tả một hành động cụ thể:

• UserRegistrar • PasswordResetter • RoleAssigner • DiscountCalculator

Những cái tên này tạo ra sự "ma sát" (friction). Nếu một PasswordResetter đột nhiên cần một công cụ để tạo hóa đơn, lỗi sai sẽ hiện ra ngay lập tức. Cái tên khiến cho thiết kế tồi trở nên khó có thể ngó lơ.

Một cái tên mơ hồ như UserService giống như kiểu dữ liệu any trong lập trình. Nó chấp nhận mọi thứ. Những cái tên chính xác sẽ tạo ra các ranh giới.

Điều này thậm chí còn quan trọng hơn hiện nay vì sự xuất hiện của AI.

Các tác nhân lập trình AI (AI coding agents) sẽ nhìn vào mã nguồn hiện có của bạn để quyết định nơi đặt logic mới. Nếu bạn đưa cho AI một UserService, nó sẽ thêm các tính năng mới vào chính cái class hỗn độn đó. Và nó sẽ làm việc này cực kỳ nhanh.

Nếu bạn đưa cho AI một PasswordResetter, nó sẽ hoạt động trong phạm vi ranh giới cụ thể đó.

Cơ sở mã (codebase) của bạn chính là một prompt cho AI. Những cái tên mơ hồ sẽ dạy cho AI cách thiết kế mơ hồ.

Tên gọi không tạo ra kiến trúc tốt. Chúng làm cho kiến trúc tồi trở nên rõ ràng hơn.

Hãy đặt cho mỗi trách nhiệm một cái tên đủ chính xác để những đoạn mã không liên quan trông có vẻ "không trung thực".

Source: https://dev.to/caeus/one-simple-naming-trick-that-keeps-vibe-coded-code-from-rotting-5hf5

Optional learning community: https://t.me/GyaanSetuAi