Arutelu:Visual Basic 2005/Väldi
Lisa teemaLoogilised operatsioonid
[muuda]Lahendusi on alati palju, kuid optimaalseid on 1. Tihti ei ole aega kõiki valemeid läbi proovida, seega tasuks oma stiilipõhiline koodiülesehitus optimeerida.
Ma ei saa sellega kuidagi nõus olla. Optimaalseid lahendusi võib probleemile vabalt olla mitmeid. Tihtipeale on üksnes stiili või maitse küsimus, millist neist kasutada.
Eriti ohtlik tee on aga proovida koodi koheselt võimalikult palju optimeerida. Ehk siis tsiteerides klassikuid:
Premature optimization is the root of all evil.
Loogikatehete optimeerimine näib mulle aga eriti asjatu vaev - praktiliselt olematud on olukorrad, kus loogikatehete kiirus hakkab oluliselt mõjutama programmi kiirust.
See, et algajad kirjutavad
x = not x
asemel
if x = true then x = false else x = true
tuleneb kogenematusest. Põhjendusest, et esimene variant on lihtsamini loetav/kirjutatav, peaks täiesti piisama. Kiirus on siin täiesti ebaoluline.
Teine viga mis tehakse just näilise kiirusega seoses, on keerukate tehete paigutamine ühele reale. A'la:
if (isMan or isWoman) and (hasAxe or hasKnife or hasGun) then runAwayFrom(x) end if
Märksa parem on grupeerida sellised pikad ja lohisevad loogikatehted arusaadavamateks alamosadeks, nagu siin:
isHuman = isMan or isWoman hasWeapon = hasAxe or hasKnife or hasGun if ( isHuman and hasWeapon ) then runAwayFromHim() end if
Nene 16. oktoober 2006, kell 22:05 (UTC)
Re:
[muuda]"Loogikatehete optimeerimine näib mulle aga eriti asjatu vaev". Näiline ≠ Tõeline, püüan seleteada: Loogikapõhised tehted on tingimuste ja korduste alused, millest sõltub kogu kood. Kuid ma ei rääkinud loogikatehete endi optimeerimisest, vaid nn. korduva uurimise vähendamisest.
Selle asemel, et kirjutada kood:
Private Sub Timer1_Tick() Handles Timer1.Tick if checkbox=true then render=true:exit for ...jne End Sub
hoopis
Private Sub CheckBox1_CheckedChanged() Handles CheckBox1.CheckedChanged bool1=not bool1 End Sub Private Sub Timer1_Tick() Handles Timer1.Tick if bool1=true then render=true:exit for ...jne End Sub
See näide demonstreerib, et objekti uurimine võtab kauem aega. Samal põhjusel on Css'is mitme faili avamine aeganõudvam kui ühe, kuigi sisu on neil kokku sama. Ning koodi saab optimeerida kui, taoline objekti poole pöördimine ära jätta.
Boolean väärtus on kui elementaarlüliti, millel on väga palju kasutusalasid. Oleks äärmiselt töömahukas projekt seletada ära põhivormidki. Kirja sai pandud punktid, mis kajastavad 1 realisi boolean käsitusviise üldisel tasemel, ja näitlustatud kuidas oleks võimalik võrrelda mis on parim.
Aga üldistadesi taolise koodijupi elementaarlülitini, ununes kuskil selle käigus, et kõik inimesed ei oma sama hoomatavust koodile mida kirja panen. --M2s17 18. oktoober 2006, kell 17:43 (UTC)