|
Autor: Vedran (poslano mailom na legende)
Poštovanje,
pohvale za cjelokupni rad i prilažem svoju priču.
Pozdrav
Vedran
--------------------------
--------------------------
Pred kraj projekta pridružio se kolega da se stignu rokovi. Kolega
ne spada u šampione, ali se šampionizam može svakome desiti. Svako
je radio svoj posao (barem sam tako mislio) i ispravljao uočene
bugove. Kada je projekt pušten u rad, bacio sam pogled na
"ispravljene bugove". Ispravka je bilo podosta, a dajem jedan od
meni dražih primjera.
Primjer iz javaScripta. Funkcija treba setirati input polje i
submitati formu:
Original:
function setFirst(fi)
{
document.forma.first.value = fi;
document.forma.submit();
}
Ispravljeno:
function switchToPage(p) {
if (!p) return;
var frm = document.getElementById('forma');
var obj = frm ? frm.elements['p'] ||
frm.p || null : null;
if (obj) obj.value = String(p);
if (frm) frm.submit();
}
Možete primjetiti da su imena funkcije i input polja izmjenjeno iz "setFirst"
u "switchToPage" odnosno
"first" u "p".
Linija
var obj = frm ? frm.elements['p'] || frm.p || null : null;
mi je posebno draga. Trebalo mi je podosta vremena da je kolko tolko
rekonstruiram. Ista linija napisana čitljivije korištenjem naredbe
if
if(frm)
{
obj = frm.elements['p'] || frm.p ||
null
}
else
{
obj = null
}
Dodatna analiza:
if(frm) – frm je forma, a ne logièni operator. Valjda se mislilo na
if(frm == null)
obj = frm.elements['p'] || frm.p || null – Mješati logičke
operatore i element forme je za pohvalu. Ovo radi jer frm.elements['p']
je dio koji se nalazi pa operator || ne traži dalje, frm.p je
apsolutno ništa jer je p ulazna varijabla funkcije, u ovom slučaju
string.
Obrazloženje za izmjene u funkciji je da moja "sigurno neće raditi u
novoj verziji Explorera" (btw. dolazi 2007.) i da je ovaj način
siguran da se ne desi greška.
|