Bazı eski VB kodlarını yeniden yazmaktan sorumluyum. Nasıl çalıştığını anlıyorum, ancak yaptıklarını yapmanın çok daha verimli bir yolu olduğunu hissediyorum. Ne olduğunu anlayamıyorum. İşte veri gereksinimleri açısından yapmam gerekene gerçekten benzeyen bir örnek.
Kullanıcı bir GUI'de araba üreticisi, yapımı, modeli ve rengini seçmelidir. Ben böyle bir şey görünüyor büyük bir metin dosyası var:
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.
İlk seçim Subaru Yani eğer, ikinci kutu (marka) olmalıdır değil Subarus hiçbiri kamyonlar çünkü Kamyon seçmek için bir seçenek vardır. Onlar Ford Sedan ve Boğa seçeneğini Benzer şekilde, ardından son kutu (renk) olmalıdır değil mavi seçmek için bir seçenek göstermektedir. Veya Siyah. Veya kırmızı, yeşil veya beyaz dışında herhangi bir şey.
Benden önce kodu yazan insanlar bununla geldi (python-y psuedocode'da):
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
Bence bu hem algoritma düzeyinde hem de sözdizimi düzeyinde iğrenç. Birincisi, doğru yapılırsa sadece birkaç satırdan okunması gerektiğinde tüm dosyayı ayrıştırır. Bunu daha da verimsiz hale getirmek için, gerçek verilerim 4 yerine 4 seçenek arasından seçim yapabiliyor.
Verileri dosyada saklamanın farklı bir yolunu ya da getValidOptions
işlevi hem daha güzel hem de daha verimli hale getirmek için ayrıştırmanın farklı bir yolunu arıyorum . Bunu yapmamın bir yolu var mı?