Evo jedan jednostavan zadačić koji nosi jaku lekciju. Barem moje osobno mišljenje da iza ovog jednostavnog principa kojeg ću pokazati stoji velika vrijednost, jer omogućuje kreiranje strukture programa koja je jednostavno proširiva, a bez narušavanja prethodno stvorenoga.
To je čest problem…svi mi svjedočimo da updateovi programa često za sobom nose more bugova koji iskaču iz prošlosti na taj neki novi update.
E sad, kad kreiramo neku funkciju, nikada ne možemo pretpostaviti što će donesti budućnost i kakvu ćemo prilagodbu morati raditi na toj funkciji da ona zadovolji sve naknadno nastale zahtjeve koji će se od nje tražiti…
Kod prvog kreiranja funkcije, dobro je malo misliti unaprijed…no nemoguće je uzeti sve u obzir što će doći… Zato temelje funkcije treba postaviti lako proširive, pa je čarolija upravo u tome da će novonastali zahtjevi forsirati “sazrijevanje” funkcije. Kroz par godina adaptacije funkcije prema novim zahtjevima…nastaje pravo čudo (rekao bih). Čudo zato jer kroz te godine je funkcija na neki način evoluirala…i to čak i neovisno od nas. Triger evoluciji nismo mi, nego zahtjevi koji iskaču iz okoline na koje nismo mogli računati prvog dana. Mi smo samo izvršni član, koji slijedi jednostavne principe da omogući traženu evoluciju, a da ne naruši postojeće veze. Kad se savladaju ti principi, mi smo nekako samo statisti koji “hranimo” te funkcije i gledamo njihovo sazrijevanje ka tolikoj kompleksnosti koju i sami teško kasnije razumijemo. Rekao bih da toj čaroliji ne podliježe samo neka tamo naša malena funkcija…nego i evolucija svih programskih tehnologija/jezika…od asembly-a …pa na dalje.
A divno je to, kad funkcije koje hranimo, postanu toliko kompleksne da ih i sami teško razumijemo…mi ih zapravo i dalje možemo “hraniti” sljedeći jednostavne principe koji ostaju uvijek u puno jednostavnijoj formi od ukupne kompleksnosti koja se stvara…
Ja taj proces zovem sazrijevanjem funkcija. No bitna stvar, da bi funkcije uopće mogle sazrijevati …treba ih prvo posaditi i držati u posudi u kojoj će rasti. (Što bi točno značilo posaditi, i posuda u kojoj rastu ? …o tom potom…može netko pokšati dati odgovor…)
E sada, ne očekujte nikakvu spektakularnu metodu…ali ljepota je upravo u jednostavnosti. I vjerujem da mnogi to i rade kako ću pokazati. No ova lekcija je inspirirana @belmin -ovom željom da uči, i praktički ovo je savjet njemu da razmotri ovu ideju. No svakako, svi su pozvani da daju svoje solucije na dat zadatak. A sada zadatak:
function getDayName(miliseconds)
{
var dayNames=['nedjelja','ponedjeljak','utorak','srijeda','četvrtak','petak','subota'];
var date=new Date(miliseconds);
var dayIndex=date.getDay();
return dayNames[dayIndex];
}
Ovo je jedna jednostavna JS funkcija koja vraća ime dana za ulazni parametar milisekunde.
Kreator ove funkcije nije imao velikih potreba, te je to napravio u najjednostavnijem smislu kojem je mogao…
…no tu nastupate vi koji trebate veću funkcionalnost iste ove funkcije. Vama treba da vam funkcija može vratiti ime dana i za broj od 0-6 (koji predstavlja index nekog dana u prikazanom arrayu), isto kao i za milisekunde.
Također vam ponekad treba da vam funkcija vrati samo short varijantu imena: (pon,uto,sri,cet,pet,sub,ned)
Kako biste to učinili? Traženo rješenje mora biti uklopljeno u postojeću funkciju, te ne smije naravno narušavati postojeću vezu ulaza izlaza gore prikazane funkcije. Što u prijevodu znači, gdje god se ova funkcija do sada koristila…ti djelovi codea moraju i dalje jednako raditi kao što su i dosad.