Goufalite hoàn toàn chính xác về vấn đề này: đó hoàn toàn không phải là vấn đề kỹ thuật, chỉ là vấn đề đặt tên, vì vậy rất nhiều lời khuyên được đánh giá dựa trên ý tưởng của tác giả về tên nào là tốt nhất.
Đặc tả MQTT 3.1 cho biết :
- Tên chủ đề và Bộ lọc chủ đề phân biệt chữ hoa chữ thường
- Tên chủ đề và Bộ lọc chủ đề có thể bao gồm ký tự khoảng trắng
- Tên chủ đề và Bộ lọc chủ đề là các chuỗi được mã hóa UTF-8, chúng KHÔNG ĐƯỢC mã hóa thành hơn 65535 byte
Vì vậy, nói một cách đơn giản trên cơ sở kỹ thuật, các quy tắc chỉ ASCII và 'không có khoảng trắng' là không cần thiết; tất cả các nhà môi giới MQTT tuân thủ sẽ có thể xử lý chúng tốt.
Tôi thực sự không đồng ý với một số điểm mà HiveMQ đưa ra:
Một không gian là kẻ thù tự nhiên của mỗi lập trình viên, họ thường làm cho việc đọc và gỡ lỗi các chủ đề trở nên khó khăn hơn nhiều, khi mọi thứ không diễn ra như vậy, họ nên làm. Tương tự như cái đầu tiên, chỉ vì thứ gì đó được cho phép không có nghĩa là nó nên được sử dụng. UTF-8 biết nhiều loại khoảng trắng khác nhau, điều khá rõ ràng là nên tránh các ký tự không phổ biến như vậy.
Rất khó có khả năng bạn sẽ sử dụng khoảng trắng theo bất kỳ cách nào khác ngoài việc chỉ nhấn SPACEphím trên bàn phím của bạn, vì vậy tôi không nghĩ việc sử dụng homoglyphs vô tình thực sự là một vấn đề.
Việc sử dụng ký tự UTF-8 không phải ASCII khiến việc tìm lỗi chính tả hoặc các vấn đề liên quan đến bộ ký tự trở nên rất khó khăn, vì thường chúng không thể được hiển thị chính xác. Trừ khi thực sự cần thiết, chúng tôi khuyên bạn nên tránh sử dụng ký tự không phải ASCII trong một chủ đề.
Điểm công bằng - gõ các ký tự không phải ASCII có thể là một vấn đề lớn. Cá nhân, tôi sẽ tránh Garage_Sensor_001/Temperature/°C
đơn giản vì rất nhiều bàn phím không có biểu tượng độ tích hợp (bàn phím của Anh chắc chắn không!). Quyết định này thực sự dựa trên thực tiễn chứ không phải do giao thức; nếu bạn có thể sử dụng các ký tự đặc biệt mà không cần bận tâm nhiều, và bạn chắc chắn rằng không ai khác sẽ cần phải nhập các ký tự vào, hãy tìm nó!
Ngoài ra, tôi sẽ có một chút hoài nghi về một số lời khuyên của HiveMQ; hơn nữa trong trang bạn đã liên kết, nó nói "Đừng đăng ký #", đã bị tranh chấp trên trang web !