Muudame tsüklid töökindlamaks
28.02.2008 | Gunnar
Väike näide sellest, kuidas oma koodis massiivide ja list'ide kasutamist pisut kuulikindlamaks muuta.
Küllaltki igapäevane nähtus programmi koodis on massiivide ja list'idega tegelemine. Eriti toimingud, mis puutuvad kõiki massiivi või list'i elemente. Näiteks midagi sellist.
{
foreach(MyObject object in entries)
{
if(object.IsDirty)
object.Save();
}
}
Algul ei teki selles koodis ehk mingit viga. Kuid kui süsteem on kord mahukas, sellega on vahepeal tegelenud ka vähekogenud või lohakad arendajad, võib see kood töötamast lakata. Miks?
Siin on tehtud üks julge eeldus, millega vastuollu minek pole just keerukas tegemine ega ka mitte väga vähe esinev juhtum. Vea tekkimiseks piisab sellest kui eelmises näites toodud list'is on vähemasti üks element null. Seega saame astuda ühe sammu, et eeltoodud kood töökindlamaks muuta - teeme nii, et nulli korral liigume lihtsalt edasi.
{
foreach(MyObject object in entries)
{
if(object == null)
continue;
if(object.IsDirty)
object.Save();
}
}
See lähenemine pole lahenduseks kõikidel juhtudel. Tihti peame siiski murdma ennast läbi päris suurest ja segasest hunnikust aegade jooksul tekkinud koodist ning leidma üles koha, kus eeldustele mittevastavad andmed tekkivad.
Sellest hoolimata on hea plaan kasutada siin pakutud meetodi, et muuta oma kood senisest vea- ja töökindlamaks.
