Có rất nhiều câu hỏi về việc mã hóa một hệ thống huy hiệu tương tự như SO, câu hỏi của tôi là khác nhau. Giả sử tôi có hệ thống trang web, huy hiệu/thành tích, được lưu trữ trong DB dưới dạng hàng có khóa thành tích (id), id người dùng và bất kỳ dữ liệu nào khác.Kiến trúc cho các thành tích/huy hiệu
Câu hỏi đơn giản của tôi là, tôi nên lưu trữ ID huy hiệu ở đâu? Tôi có một lớp cho mỗi thành tích với tất cả các dữ liệu và phương pháp để thử nghiệm nếu nó đã kiếm được. Tôi tưởng tượng tôi có thể có hàng chục hoặc hàng trăm tại một số điểm. Tôi muốn các ID được sử dụng mã hóa cứng chỉ một lần, và ở một nơi ngắn gọn, vì vậy tôi không có cơ hội vô tình thay đổi chúng hoặc trộn chúng lên.
tôi khó có thể mã hóa chúng trong lớp, như
public int Key { get { return 15; } } // I'm calling it Key, not ID
nhưng nếu tôi chia thành tựu của tôi trong nhiều file Tôi không muốn phải chạy quanh tìm kiếm Key cao nhất khi tôi thêm một mới một và mạo hiểm một sai lầm.
tôi có thể đặt chúng trong một số từ điển trong lớp khác ...
public class AchievementSet
{
private Dictionary<int, Achievement> _achievements;
public AchievementSet()
{
_achievements = new Dictionary<int, Achievement>()
{
{ 1, new SomethingAchievement() }
};
}
}
Nhưng bây giờ lớp mình không biết chìa khóa riêng của nó, và nó cần phải (hoặc hiện nó?) Nếu tôi thông qua nó vào các nhà xây dựng bây giờ tôi có nguy cơ không khớp các con số.
Bất kỳ đề xuất nào?
Tại sao bạn không lưu các huy hiệu trong cơ sở dữ liệu? –
Tôi cho rằng, vì có mã được liên kết với mỗi huy hiệu và bạn vẫn cần phải khớp với đoạn mã đó với ID huy hiệu. Vì vậy, về cơ bản nó sẽ không giải quyết bất cứ điều gì. – guillaume31