Tôi phụ trách viết lại một số mã VB cũ. Tôi hiểu cách thức hoạt động của nó, nhưng tôi cảm thấy như có một cách hiệu quả hơn nhiều để làm những gì họ đã làm. Tôi chỉ không thể hiểu nó là gì. Dưới đây là một ví dụ giả định rằng về mặt yêu cầu dữ liệu thực sự giống với những gì tôi cần làm.
Người dùng phải chọn ra nhà sản xuất, chế tạo, kiểu dáng và màu sắc của chiếc xe của họ trong GUI. Tôi có một tệp văn bản lớn trông giống như thế này:
Ford Truck F150 red
Ford Truck F150 blue
Ford Truck F150 black
Ford Truck F150 silver
Ford Truck F250 red
Ford Truck F250 green
Ford Sedan Taurus red
Ford Sedan Taurus green
Ford Sedan Taurus white
Ford...
...
Subaru SUV Forester blue
Subaru SUV Forester red
Subaru SUV Outback Black
Subaru SUV Outback Green
Subaru SUV Outback Blue
Subaru SUV Outback Red
Subaru...
...
etc.
Vì vậy, nếu lựa chọn đầu tiên là Subaru, hộp thứ hai (make) không nên có tùy chọn để chọn Xe tải vì không có Subarus nào là xe tải. Tương tự, nếu họ chọn Ford, Sedan và Taurus, thì hộp cuối cùng (màu) sẽ không hiển thị tùy chọn để chọn màu xanh. Hoặc Đen. Hoặc bất cứ thứ gì khác ngoài màu đỏ, xanh lá cây hoặc trắng.
Những người đã viết mã trước khi tôi nghĩ ra điều này (trong pyued-y psuedocode):
def getValidOptions():
items = []
for i from 0 to numRows:
options = getLine().split()
if selectingManufacturer:
if options[0] not in items:
items.append(options[0])
else if selectingMake:
if selectedManufacturer == options[0] and options[1] not in items:
items.append(options[1])
else if selectingModel:
if selectedManufacturer == options[0] and selectedMake == options[1] and options[2] not in items:
items.append(options[2])
else if selectingColor:
if selectedManufacturer == options[0] and selectedMake == options[1] and selectedModel == options[2] and options[3] not in items:
items.append(options[3])
return items
Tôi nghĩ rằng đó chỉ là gớm ghiếc, cả ở cấp độ thuật toán và cấp độ cú pháp. Đối với một, nó phân tích cú pháp thông qua toàn bộ tập tin, khi nó chỉ cần đọc qua một vài dòng nếu được thực hiện đúng. Để làm cho điều này thậm chí không hiệu quả hơn, dữ liệu thực của tôi có 6 tùy chọn để chọn, thay vì chỉ 4. Đây cũng là lưu trữ nhiều dữ liệu hơn, sau đó cần phải có số lượng sao chép dữ liệu.
Tôi đang tìm kiếm một cách khác nhau để lưu trữ dữ liệu trong tệp hoặc một cách phân tích dữ liệu khác để làm cho getValidOptions
chức năng vừa đẹp hơn vừa hiệu quả hơn. Có cách nào tôi có thể làm điều này?