Mine sisusse
Otsi siit
  • Rohkem valikuid...
Otsi tulemusi mis sisaldab...
Otsi tulemusi...

Soovitatud postitused

Kuidas kirjutada viisakat skripti

 

Antud kirjatüki iva seisneb selles, et jagada oma kogemusi nn viisaka programmeerimise osas, eelkõige muidugi seda, mis puudutab PHP-d. Kuna alates septembrist on mul võimalik suhteliselt vabalt vaadata skripte, kartmata punktide kaotust (ehee, kuulen kadedushüüdeid), siis olen seda ka tegema hakanud. Skriptide juures, mida ma laadinud olen, võite siis leida minu kommentaare, kus ma 10 palli süsteemis hindan skripide sisulist poolt. Millised on kriteeriumid, millest ma hindamisel lähtun, sellest kirjatüki lõpus.

Olen neid skripte vaadanud ja kaalunud, ütlen ausalt, minul ei ole neist suurt midagi õppida. Ja minu jaoks on vägagi oluline just sisuline pool.

Allpool toon puudused, mis skriptides on üldlevinud.

 

1. Skriptid ei ole loetavad

 

Skriptid kirjutatakse nii, et praktiliselt ei ole võimalik neid normaalselt lugeda, puuduvad kommentaarid, liigestatus ja stiil. Mida siis teha, et skriptid oleksid loetavad

a) kasutage reavahetust - kõik asjad üksteise all ilma mingite vahedeta muudab skripti äärmiselt loetamatuks

b) lisage kommentaare - mingi tegevuse alguses oleks viisakas lisada kommentaar, mida alljärgnev lõik teeb

c) kasutage treppimist - programmi sõlmed võiksid olla nihkes paremale teatud sammu võrra (tabuleeritud). Allpool on kaks näidet, eks otsutsage ise, kumb on loetavam (näide on võetud ühest allalaaditud skriptist).

Esiteks originaal

PHP kood:

 

 

if($HTTP_POST_VARS[reg]) {

 

$kasutajanimi = $HTTP_POST_VARS[kasutajanimi];

$salasona = $HTTP_POST_VARS[salasona];

$salasona2 = $HTTP_POST_VARS[salasona2];

$email = $HTTP_POST_VARS;

 

$avakasfail = fopen($kasfailnimi, "r");

$kasfailsisu = fread($avakasfail, filesize($kasfailnimi));

fclose($avakasfail);

 

eregi("(.*)#\|$kasutajanimi\|(.*)", $kasfailsisu, $tulemus);

$kasutajanimi2 = $tulemus[2];

 

eregi("(.*)#\|(.*)\|(.*)\|(.*)\|$email\|(.*)", $kasfailsisu, $tulemus2);

$email2 = $tulemus2[2];

 

 

Teiseks natuke parandatud variant koos treppimise ja kommentaaridega

PHP kood:

 

 

# Kui parameeter reg on olemas

if($HTTP_POST_VARS[reg])

{

# Määrame muutujate väärtused

$kasutajanimi = $HTTP_POST_VARS[kasutajanimi];

$salasona = $HTTP_POST_VARS[salasona];

$salasona2 = $HTTP_POST_VARS[salasona2];

$email = $HTTP_POST_VARS;

 

# Avame faili ja loeme selle sisu

 

$avakasfail = fopen($kasfailnimi, "r");

$kasfailsisu = fread($avakasfail, filesize($kasfailnimi));

fclose($avakasfail);

 

# Teostame kontrollid

 

eregi("(.*)#\|$kasutajanimi\|(.*)", $kasfailsisu, $tulemus);

$kasutajanimi2 = $tulemus[2];

 

eregi("(.*)#\|(.*)\|(.*)\|(.*)\|$email\|(.*)", $kasfailsisu, $tulemus2);

$email2 = $tulemus2[2];

}

 

Eks otsustage ise, kumb on loetavam

 

2. Kasutage SWITCH direktiivi

 

Kui te kontrollite mingit parameetrit, millel on vastavalt väärtusele erinev tegevus, siis kasutatakse enamjaolt IF direktiive, mis laotakse lihtsalt üksteise alla

Näide

PHP kood:

 

 

if ($a = 1) { $b = 1; echo "Esimene"; }

if ($a = 2) { $b = 2; echo "Teine"; }

if ($a = 3) { $b = 3; echo "Kolmas"; }

 

Aga loetavuse seisukohast oleks mõistlik teha hoopis nii:

PHP kood:

 

 

switch($a)

{

case(1) : $b = 1;

echo "Esimene";

break;

case(2) : $b = 2;

echo "Teine";

break;

case(3) : $b = 3;

echo "Kolmas";

break;

}

 

 

3. Kasutage funktsioone sarnaste tegevuste jaoks

 

Huvitav on see, et praktiliselt ei kasutata funktsioone oma skriptides (peale standadrsete). Samas on tihti pikalt-laialt defineeritud mingid laused, mis teevad samu asju, lihtsalt üks parameeter on erinev

Näiteks

PHP kood:

 

 

if ($a = 1) { $b = 1; echo "

Esimene

"; }

if ($a = 2) { $b = 2; echo "

Teine

"; }

if ($a = 3) { $b = 3; echo "

Kolmas

"; }

 

Palju parem oleks teha hoopis nii

PHP kood:

 

 

function tryki($mida)

{

echo "

$mida

";

}

 

switch($a)

{

case(1) : $b = 1;

tryki("Esimene");

break;

case(2) : $b = 2;

tryki_lause("Teine");

break;

case(3) : $b = 3;

tryki_lause("Kolmas");

break;

 

 

 

4. Disain ja äriloogika on eraldamata

 

Kuna PHP väljund on HTML, siis skriptid sisaldavad endas ka loomulikult HTML elemente, mida siis direktiivi echo abil väljastatakse. Kui nüüd kõik kupatus on üksteise all, pole kasutatud ei treppimist, funktsioone ja switch'i, samuti on kohe ka echo abil tehtud HTML välundamine, on tulemuseks skript, mille kasutuselevõtmine on tihtipeale vägagi raske, kuna kogu disaini osa tuleb läbi käia.

Selgituseks, mis on äriloogika. Äriloogika on programmi oluliseim osa, mis töötleb ja muudab andmevoogu, suhtleb andmebaasidega ja moodustab väljundi. Väljund ehk disain ise ei ole osa äriloogikast, vaid moodustab eraldiseisva programmi osa. Tihti nimetatakse seda ka kasutajaliideseks ehk User Interface. Korralik skript peaks töötama erinevate kasutajaliidestega ilma, et see nõuaks meeletuid pingutusi.

Mida siis teha?

 

a) ärge kasutage HTML väljsatamiseks echo direktiivi, vaid PHP tääge.

 

PHP kood:

 

 

echo "

<a href="mailto:" rel=""><a href="mailto:" rel="">Minu asi</a></a>";

 

Kasutage hoopis

PHP kood:

 

 

?>

<a href="mailto:" rel=""><a href="mailto:" rel="">Minu asi</a></a>

<?php

 

 

b) proovige disain äriloogikast eraldada kas funktsioonide või inkljuudidena.

 

Näiteks lehe algus ja lõpp võiksid olla inkljuudidena

PHP kood:

 

 

<?php

include "header.php";

 

# Siin on skripti sisu

 

include "footer.php"

?>

 

 

Kogu ülejäänud disain võiks olla eraldi funktsioonides, võimaluse lausa eraldi inkljuudis. Kuidas seda täpselt teha, selle kohta kirjutaks lausa eraldi õpetuse.

 

Finale Ultimo

 

Mida ma hindan siis eraldi skriptide juures, ehk siis hinded skripti kohta

 

1. Loetavus - kuivõrd on skript loetav

2. Skripti originaalsus - kuivõrd on väljapakutud skript originaalne

3. Lahenduse originaalsus - kuivõrd on lahendus originaalne

4. Integreeritavus - kuivõrd on skript integreeritav erinevate süsteemidega ja teiste skriptidega

5. Professionaalsus - kuivõrd on lahenduse sisu professionaalne (loogilised sõlmed, funktsioonid, äriloogika ja disaini omavaheline seos).

 

Seniks aga kõigile noortele programmeerijatele rahulikku meelt ja püüet areneda.


[sIGPIC][/sIGPIC]

Jaga seda postitust


Postituse link
Share on other sites

Kommentaari lisamiseks loo konto või logi sisse

Kommenteerimiseks peate olema liige

Loo konto

Liituge meie kommuuni uue kontoga. See on lihtne!

Loo uus konto

Logi sisse

On juba konto? Logi sisse siit.

Logi sisse nüüd

×
×
  • Loo uus...

Oluline informatsioon

Selle veebisaidi paremaks muutmiseks oleme teie seadmesse paigutanud küpsised . Võite kohandada oma küpsiste seadeid , vastasel juhul eeldame, et te olete küpsiste kasutamisega nõus kui jätkate veebisaidil sirvimist.. Palun lugege läbi Kasutustingimused ja Privaatsuspoliitika.