我负责重写一些旧的VB代码。我了解它是如何工作的,但是我觉得有一种更有效的方法来完成他们的工作。我只是不知道那是什么。这是一个人为的示例,它在数据需求方面确实与我需要做的相似。
用户必须在GUI中挑选汽车的制造商,制造商,型号和颜色。我有一个很大的文本文件,看起来像这样:
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.
因此,如果第一个选择是斯巴鲁,第二个框(MAKE)应该不会有一个选项,选择卡车,因为没有斯巴鲁的是卡车。同样,如果他们选择的福特轿车和金牛座,那么最后盒(颜色)应该不会显示一个选项来选择蓝色。或黑色。或除红色,绿色或白色以外的任何其他颜色。
在我之前编写代码的人想到了这一点(在python-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
我认为这在算法级别和语法级别都是令人毛骨悚然的。首先,它解析整个文件,如果正确完成的话,它仅需要读取几行。为了提高效率,我的真实数据有6个选项可供选择,而不仅仅是4个。给定数据重复量,这还存储了所需的更多数据。
我正在寻找将数据存储在文件中的其他方法,或者寻找使其getValidOptions
功能更美观,更高效的解析方法。有什么办法可以做到这一点?