ฉันรับผิดชอบในการเขียนรหัส 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.
ดังนั้นหากการเลือกแรกคือ Subaru กล่องที่สอง (ยี่ห้อ) ไม่ควรมีตัวเลือกในการเลือกรถบรรทุกเพราะไม่มี Subarus เป็นรถบรรทุก หากพวกเขาเลือกฟอร์ดซีดานและทอรัสกล่องสุดท้าย (สี) ไม่ควรแสดงตัวเลือกเพื่อเลือกสีน้ำเงิน หรือดำ หรือสิ่งอื่นใดนอกเหนือจากสีแดงสีเขียวหรือสีขาว
ผู้ที่เขียนโค้ดก่อนที่ฉันจะมาด้วยสิ่งนี้ (ใน 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
ฟังก์ชั่นทั้งสวยและมีประสิทธิภาพมากขึ้น มีวิธีใดบ้างที่ฉันสามารถทำได้