Tôi có một câu lệnh if khá dài. Câu lệnh if kiểm tra một chuỗi "type" để xác định loại đối tượng nào cần được khởi tạo. Đây là mẫu ...Các cách để thay thế câu lệnh if lớn với cấu trúc thay thế trong Mục tiêu-C
if ([type rangeOfString:@"coin-large"].location != NSNotFound)
{
... create large coin ...
mgr = gameLayer.coinLargeMgr;
}
else if ([type rangeOfString:@"coin-small"].location != NSNotFound)
{
mgr = gameLayer.coinLargeMgr;
}
... more else statements ...
myObject = [mgr getNewObject];
Câu lệnh "else-if" tiếp tục cho các loại đối tượng khác hiện có khoảng 20 và số đó có thể tăng lên. Điều này hoạt động khá tốt nhưng về mặt bảo trì và hiệu quả, tôi nghĩ rằng nó có thể được cải thiện. Ứng cử viên hàng đầu của tôi ngay bây giờ là tạo ra một khóa NSDictionary
trên chuỗi loại đối tượng (đồng xu nhỏ, đồng xu lớn, v.v.) và với giá trị của đối tượng người quản lý cần được gắn với loại đó. Ý tưởng được rằng đây sẽ là một cái nhìn nhanh chóng cho các loại đối tượng tôi cần phải tạo ra. Bạn không chắc đây là cách tiếp cận tốt nhất, tiếp tục xem xét các tùy chọn khác nhưng tôi tò mò về những gì mà mọi người ở đây có thể đã làm cho một vấn đề tương tự. Bất kỳ trợ giúp/phản hồi nào được đánh giá cao.
Sử dụng từ điển NSD cho việc này. –
Tôi muốn ott thứ hai. Lặp lại thông qua một NSArray hoặc -Dictionary đầy NSStrings. Vì vậy, bạn làm một cái gì đó như '[type rangeOfString: [myArray objectAtIndex: i]] .location! = NSNotFound'. Ngoài ra, nếu bạn cần "người quản lý" khác nhau, hãy đặt người quản lý có trách nhiệm trong NSDictionary để có thể dễ dàng tra cứu. – Paul
Tôi nghĩ về một cái gì đó đơn giản hơn như 'mgr = [dict valueForKey: coinString]; ' –