Programiranje sicer ni religija (ok, kakor za koga), vseeno pa lahko tudi tu, po vzoru svetopisemskih grehov, naštejemo nekaj stvari, ki jih noben programer ne bi smel početi 🙂
1. Kopiraj/prilepi (brez razumevanja kode)
Ko guglaš po internetih in iščeš rešitev za nek programerski problem ter jo nato tudi najdeš, te hitro zamika, da bi jo le kopiral in prilepil v svoj projekt. To je slaba praksa ne le zato, ker v veliko primerih taka koda ne bo čisto pasala v tvoj projekt, ampak tudi zato, ker se tako ne boš nič naučil/a. Kodo najdene rešitve raje najprej dobro prouči in jo poskusi razumeti, nato pa smiselno implementiraj v svoj projekt. Tudi če koda že v originalni obliki popolnoma paše v tvoj projekt, jo raje prepiši, kot pa kopiraj/prilepi, zato da si boš bolje zapomnil/a njeno delovanje.
2. Neopisna imena spremenljivk in funkcij
Včasih nas zamika, da bi na hitro napisali neko spremenljivko ali funkcijo, in se odločimo, da bomo “prišparali” tipkanje pri imenu le-te:
a = True
x = 23.0
def n():
# koda
Pomisli, kako se bo počutil programer, ki bo šel za tabo brat ali urejat tvojo kodo. Pa tudi če ne bo tega počel nihče drug, se lahko zgodi, da se boš čez kako leto lotil/a urejanja tega projekta sam/a, kar ti bo požrlo dodatni čas, ko se boš moral/a spomniti, kaj določena funkcija ali spremenljivka s tako slabo definiranim imenom sploh počne. Takrat ugotoviš, da nisi ravno prišparal/a na času.
Nasvet: piši imena spremenljivk/funkcij tako, da bodo povedala, čemu so namenjene:
paid = True
price = 23.0
def thank_you_email():
# koda
3. Neurejena koda
Še en greh, ki ga ponavadi počnemo zaradi malomarnosti in želje po čimprejšnjem dokončanju projekta, je neurejenost kode. Pri tem mislim predvsem na zamike, ki ponazarjajo hierarhijo:
<html>
<head><title>My website</title>
</head>
<body><h1>Welcome</h1>
<p>One morning, when Gregor Samsa woke from troubled dreams, he found
<a href=”http://samsa.com”>himself</a> transformed in his bed into a horrible vermin.</p></body>
</html>
Določeni jeziki, npr. Python, že zaradi svoje sintakse silijo programerja, k pisanju lepše kode, za večino jezikov pa to žal ne drži. Čeprav je našemu browserju, interpreterju ali compilerju vseeno za to, kako je urejena naša koda, pa to ne bo vseeno programerju, ki bo za tabo bral in spreminjal to kodo – ali pa če jo boš kdaj kasneje sam/a. Zatorej bodi kul in ustrezno urejaj svojo kodo.
4. Podvajanje kode
Primer slabe prakse:
<div style="height: 100px; width: 100px; background-color: #F50A31; margin: 20px;">rdec kvadrat</div>
<div style="height: 100px; width: 100px; background-color: #F50A31; margin: 20px;">se en rdec kvadrat</div>
Znan programerski rek pravi: DRY – Don’t Repeat Yourself. To pomeni, da poskusi čimvečkrat kodo reciklirati, torej ponovno uporabiti. Zatorej za zgornjo kodo naredimo CSS class, ki ga lahko večkrat uporabimo:
CSS:
.red-square {
height: 100px;
width: 100px;
background-color: #F50A31;
margin: 20px;
}
HTML:
<div class="red-square">rdec kvadrat</div>
<div class="red-square">se en rdec kvadrat</div>
5. Brisanje (delete) z GET zahtevo
Ena napaka, ki se na žalost kar pogosto zgodi pri back-end programiranju spletnih aplikacij je, da se implementira brisanje nekega elementa (npr. blog objave) kar z GET metodo. Tega, lepo prosim, ne počnite. Zakaj? Eden najbolj pogostih razlogov je ta, da po spletnih straneh radi hodijo pajki spletnih iskalnikov, ki klikajo na vse mogoče – lahko tudi na tvoj delete gumb in ti tako nenamenoma izbrišejo nekaj, kar ti je drago.
GET zahteva je, kot že njeno ime pove, namenjena dobivanju neke spletne vsebine. Poleg GET, obstajajo še druge vrste zahtev, na primer POST, DELETE in PUT. Kot je že iz imena razvidno, je za brisanje namenjena DELETE metoda. Ni pa nič narobe, če namesto nje uporabiš POST metodo (dosti bolje, kot pa GET).
6. Shranjevanje gesel v originalni obliki
Če se lotimo implementacije lastnega avtentikacijskega sistema na backendu, bomo v naši podatkovni bazi oblikovali tabelo ali kolekcijo uporabnikov. Sem bomo shranjevali uporabnikove podatke, med drugim tudi podatke za prijavo (login) v naš sistem (uporabniško ime in geslo).
Eden izmed najhujših grehov je, da uporabnikovo geslo shranite v originalni obliki. Tega nikoli ne počnite! Gesla je potrebno s posebnimi algoritmi šifrirati, ter nato to šifro (hash) shraniti v podatkovno bazo (in jo še obvezno posoliti). Torej, če je moje geslo “juhu123”, naj ne bo shranjeno kot “juhu123”, ampak naj bo z nekim algoritmom (npr. sha512) ustrezno hashano, da bo zgledalo nekako tako “5717332c54c81bc097d20c0191b93009d8a796”.
7. Shranjevanje skrivnosti v GIT
V svojih spletnih in mobilnih aplikacijah vedno pogosteje uporabljamo razne API-je (npr. Facebook API, Instagram API itd.), do katerih imamo dostop s skrivnim ključem. V kolikor pri programiranju uporabljaš GIT (in ga definitivno moraš), pazi, da tega skrivnega ključa ne shraniš v GIT arhiv ter, še huje, pošlješ na GitHub v svoj javni repozitorij. Skrivne ključe raje zapiši v neko skrivno datoteko (npr. secret.py, če uporabljaš Python) in jo dodaj v .gitignore.
Tovrstnih grehov je seveda še več kot le 7, zato bo v kratkem sledil tudi drugi del. Kaj bi ti dodal/a na naslednji seznam? (napiši v komentar) 🙂