Saya bertugas menulis ulang beberapa kode VB lama. Saya mengerti cara kerjanya, tetapi saya merasa ada cara yang jauh lebih efisien untuk melakukan apa yang mereka lakukan. Aku hanya tidak tahu apa itu. Berikut adalah contoh yang dibuat bahwa dalam hal persyaratan data benar-benar mirip dengan apa yang perlu saya lakukan.
Pengguna harus memilih pabrikan, membuat, model dan warna mobil mereka dalam GUI. Saya memiliki file teks besar yang terlihat seperti ini:
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.
Jadi jika pilihan pertama adalah Subaru, kotak kedua (make) seharusnya tidak memiliki pilihan untuk memilih Truk karena tidak ada Subarus adalah truk. Demikian pula, jika mereka memilih Ford, Sedan dan Taurus, maka kotak terakhir (warna) tidak akan menunjukkan opsi untuk memilih biru. Atau Hitam. Atau apapun selain merah, hijau atau putih.
Orang-orang yang menulis kode sebelum saya membuat ini (dalam 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
Saya pikir itu hanya mengerikan, baik pada level algoritma, dan pada level sintaksis. Untuk satu, itu mem-parsing seluruh file, ketika itu hanya perlu membaca beberapa baris jika dilakukan dengan benar. Untuk membuat ini lebih tidak efisien, data asli saya memiliki 6 opsi untuk dipilih, bukan hanya 4. Ini juga menyimpan lebih banyak data maka perlu, mengingat jumlah duplikasi data.
Saya mencari cara berbeda untuk menyimpan data dalam file, atau cara parsing yang berbeda untuk membuat getValidOptions
fungsi keduanya lebih cantik dan lebih efisien. Apakah ada cara saya bisa melakukan ini?