Monday, April 7, 2008

Dobra praksa (1)

Ovo je samo deo dobre prakse koju cu kasnije dopunjavati. Vazi za manje-vise sve programske jezike, iako su primeri napisani u C#-u.

Petlje
U pocetku beze samo For...Next, Do..Until i While...Whend. Ove dve poslednje se malo koriste (uglavnom za citanje slogova iz DB set-a, npr. ResultSet-a, RecordSeta...) , ali je usla u "modu" petlja foreach (negde je odvojeno, for each).

U slucaju .NET-a petlja foreach se upotrebljava kada ne vrsimo direktne izmene nad podacima koji se nalaze u kolekciji kroz koju "trcimo", kao npr:

foreach (string korisnik in korisnici)
{
Console.Write(korisnik);
}

U slucaju for petlje, sa podacima se moze manipulisati. Ako se radi brisanje zapisa iz kolekcije koja se cita, praksa je da se nakon brisanja izlazi iz petlje, ili vratiti brojac za jednu vrednost manje.

for(int i = 0; i <>
{
korisnici.RemoveAt(i);
--i;
}


U ovom slucaju je broj elemenata je promenljiv, dok je u sledecem fiksan te je bolje dodati novu varijablu kako se ne bi u svakom ciklusu izracunavala duzina niza tj. broj elemenata u kolekciji.

int limit = korisnici.Length;
for(int i = 0; i <>
{
Console.Write(korisnici[i]);
}

Iako neki programeri imaju naviku da im petlja ide od nazad (brojac se dekrementuje), ovaj pristup odstupa od "prirodnog nacina kretanja", tako da ga ne preporucujem.


EventHandler-i
Metode koje "hvataju" dogadjaje su osnova za interakciju korisnika i aplikacije. Mnogi pocetnici programeri grese, pa u ovim metodama "guraju" citavu logiku i obradu podataka, sto je losa praksa. Treba izdvojiti sve sto nema veze sa dogadjajem i sa njegovim argumentima u posebnu metodu i eventaulno joj proslediti neke parametre iz event-a. Dakle, nesto kao:

private void Btn1_OnClick(object sender, EventArgs e)
{
Radi()
}

Ako od nekog podatka koji je vezan za nosioca dogadjaja zavisi izvrsavanje programa, vrsi se ispitivanje i zatim zove odgovarajuci metod:

private void Btn1_OnClick(object sender, EventArgs e)
{
LinkButton dugme = (LinkButton) sender;

if(dugme.Text == "Cuvaj")
Sacuvaj();
else
Osvezi();
}


Uslovi
Za blokove ili "programski tok" se najcesce povezuju if uslovi. Ono sto je bitno je da se kod if naredbe prvo ispituje poslednji uslov (ako ih ima vise) te ako je "veznik" uslova AND tj && tok programa se nastavlja dalje jer uslov nije zadovoljen.

Takodje, treba obratiti paznju na ispitivanje jednakosti. Naime, brze se izvrsava ispitivanje razlicitosti nego jednakosti, tako da ako nema neke preterane potrebe za jednakoscu (kao u prethodnom primeru) bolje je uzeti u obzir razlicitost.

No comments: