Merni sistemi u industriji Kratak vodič za struktuirano programiranje. Copyright: Boris Antić, FTN, 2009

Similar documents
SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

Podešavanje za eduroam ios

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Uvod u relacione baze podataka

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

SAS On Demand. Video: Upute za registraciju:

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

Otpremanje video snimka na YouTube

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

Tutorijal za Štefice za upload slika na forum.

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

Bušilice nove generacije. ImpactDrill

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Struktura i organizacija baza podataka

Port Community System

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

STRUČNA PRAKSA B-PRO TEMA 13

BENCHMARKING HOSTELA

VBA moduli. mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice

Mogudnosti za prilagođavanje

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

PROJEKTNI PRORAČUN 1

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

1.7 Predstavljanje negativnih brojeva u binarnom sistemu

Nejednakosti s faktorijelima

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Programiranje III razred

DEFINISANJE TURISTIČKE TRAŽNJE

1. Instalacija programske podrške

IZRADA TEHNIČKE DOKUMENTACIJE

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Direktan link ka kursu:

Pravljenje Screenshota. 1. Korak

Upute za korištenje makronaredbi gml2dwg i gml2dgn

JavaScript podrska u radu sa greskama

Windows Easy Transfer

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Klasterizacija. NIKOLA MILIKIĆ URL:

CRNA GORA

Projekat iz predmeta Računarska elektronika

Upotreba selektora. June 04

3.2. Prikazati podatke o svim proizvodima, koji se proizvode u Zrenjaninu.

RANI BOOKING TURSKA LJETO 2017

СТРУКТУРА СТАНДАРДА СИСТЕМАМЕНАЏМЕНТАКВАЛИТЕТОМ

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

SKINUTO SA SAJTA Besplatan download radova

En-route procedures VFR

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

TEHNO SISTEM d.o.o. PRODUCT CATALOGUE KATALOG PROIZVODA TOPLOSKUPLJAJUĆI KABLOVSKI PRIBOR HEAT-SHRINKABLE CABLE ACCESSORIES

Nizovi. Sintaksa. ili. var pera,mika,laza,...,zoran1,zoran2,...,pera1254:real;

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

Pokretanje izvršnog fajla

Priprema podataka. NIKOLA MILIKIĆ URL:

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

Programiranje kroz aplikacije. Subprocedure Opseg promenljivih Excel VBA objektni model

za STB GO4TV in alliance with GSS media

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

Practical training. Flight manoeuvres and procedures

PROGRAMIRANJE KROZ APLIKACIJE

3D GRAFIKA I ANIMACIJA

int[] brojilo; // polje cjelih brojeva double[] vrijednosti; // polje realnih brojeva

Osnovi računarstva II. Uvodne napomene Tipovi podataka i operacije Osnovni algoritamski koraci

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

Babylon - instalacija,aktivacija i rad sa njim

2. poglavlje - IDENTIFIKACIJA POTROŠAČA - od 62 do 80 strane (19 strana)

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU

Uvod u programiranje II (za gimnazijalce)

Pokretanje (startovanje) programa Microsoft Word

3D ANIMACIJA I OPEN SOURCE

Donosnost zavarovanj v omejeni izdaji

CommLab 00. CommLab /2017 ( ) Osnove Matlab-a. 1. Uvod

KABUPLAST, AGROPLAST, AGROSIL 2500

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

INFORMATIKA II AutoCAD 9. deo. Rudarsko-geološki fakultet Rudarski odsek

Ali kako znati koja maksimalna plata pripada kojem sektoru? GROUP BY in SELECT Obično se uključuje GROUP BY kolona u SELECT listi.

MODEL OBJEKTI - VEZE KONCEPTI MODELA METODOLOGIJA MODELIRANJA

RASPRAVA O PRINCIPIMA LJUDSKOG SAZNANJA

print( """ Dobrodosli u Ismesane Reci!

ČASOPIS STRANI PRAVNI ŽIVOT UPUTSTVO ZA AUTORE

Automatske Maske za zavarivanje. Stella, black carbon. chain and skull. clown. blue carbon

PROGRAMIRANJE KROZ APLIKACIJE

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

Transcription:

Merni sistemi u industriji Kratak vodič za struktuirano programiranje Copyright: Boris Antić, FTN, 2009 Svrha ovog vodiča je da da smernice i preporuke za kvalitetno pisanje koda u struktuiranim programskim jezicima. Pridržavanje ovim pravilima ne utiče na kvalitet izvršnog koda već samo na kvalitet izvornog zapisa. Veoma često, programe razvijaju timovi inženjera i programera i izvorni kod se često prerađuje i menja od strane različitih ljudi. Takođe, dešava se da jednom napisan kod mora nakon veoma dugog vremena od njegovog nastanka da se izmeni. Kvalitetno napisan kod olakšava snalaženje u ovakvim situacijama i obezbđuje značajnu uštedu vremena. Ciljevi uvođenja standrada u pisanje izvornog koda su: povećanje čitljivosti; sprečavanje i lakše uočavanje semantičkih grešaka u programu; olakšavanje debagovanja; povećanje produktivnosti programera koji rade u timovima. 1. Dodeljivanje imena Dodeljivanje imena je najlošije standardizovana oblast strukturiranih programskih jezika. Ovde će biti date specifikacije za Delphi, mada neke od napomena važe i za većinu drugih programskih paketa. Jedan od ključnih faktora za razumevanje koda je upotreba smislenih naziva promeljivih, konstanti, procedura i sl. Upotrebom razumljivih imena nastaje samo-dokumentujući kod, tj. kod koji je razumljiv sam po sebi bez potrebe za pisanjem dodatnih komentara. Primer: Por1: Real; Por2: Real; // porez na dohodak (primer loše dodeljenog imena) // porez na promet (primer loše dodljeneog imena) PorezNaDohodak: Real; PorezNaPromet: Real; //komentari nisu potrebni zahvaljujuci //razumljivosti naziva promenljivih Za dodeljivanje imena promenljivima, procedurama i drugim elementima programa treba koristiti pune nazive. Treba izbegavati skraćenice. Npr. treba koristiti razumljiva imena poput «NazivFirme», «AdresaFirme» ili «SrednjeSlovo» umesto «Nfirme», «afirme» ili «Ss». Izbegavajte upotrebu donje crte «_» za razdvajanje reči unutar naziva kao npr. 1

«Naziv_Firme» jer ovaj karakter nepotrebno povećava dužinu imena, a ne doprinosi boljoj čitljivosti. Treba izbegavati imena duža od 15 karaktera jer ona smanjuju čitljivost. Npr. umesto «PostaviDuzinuTesktaLabele» bolje je koristiti kraći naziv «PostaviDuzinu» koji je dovoljno jasan. Treba izbegavati imena koja su veoma slična ili se razlikuju samo u jednom karakteru. Npr. treba izbegavati nazive kao što su «Proizvod» (promenljiva), «Proizvodi» (promenljiva) i «Proizvedi» (procedura, naredba) u okviru jednog istog programa kako bi se sprečila mogućnost njihovog brkanja. Ako naziv predstavlja složenicu sastavljenu od više reči, tada se svaka reč u složenici piše velikim slovom radi poboljšanja čitljivosti. Npr. «SetBrushColor» je mnogo čitljivije od «setbrushcolor». U zavisnosti od konkretnog jezika u kome se programira, postoje različite konvencije o tome da li početno slovo naziva treba biti veliko ili malo. Prema konvenciji usvojenoj u Delphi-u sva početna slova naziva promeljivih, tipova, klasa, objekata, propertija, procedura, funkcija, metoda i događaja pišu se velikim slovom (npr. «MojBroj», «Real», «Form1», «TPanel», «Font.Name», «SetLength», «OnMouseClick» itd.), dok se konstatne i sve službene reči pišu malim početnim slovom (npr. «mterror», «clred»,, «end», «for» «string» 1 i sl.). 1.1. Dodeljivanje imena promenljivama Svrha dodeljivanja smislenih imena promenljivama jeste omogućavanje njihovog razlikovanja od drugih tipova podataka. Osnovno pravilo je da se izbegavaju generička imena poput «Broj» ili «Slovo» jer je njihova namena nejasna. Za razliku od većine drugih struktuiranih programskih jezika, Delphi preporučuje da se nazivi promenljivih pišu velikim početnim slovom. Java, C, C++, PHP i neki drugi jezici koriste mala pocetna slova za nazive svih promenljivih i svih funkcija. Za nizove je poželjno koristiti imena u množini. Npr. «RezultatiMerenja» umesto «RezultatMerenja», odnosno «Rezultati[0]» umesto «Rezultat[0]» Izuzeci od gornjih pravila su nazivi promeljivih koje se koriste u petljama. Ovi nazivi treba da budu što kraći jer se koriste često, a smisao im je apstraktan, pa ne utiču na razumljivost koda. Primeri su «I», «J», i «K» koji se često koriste kao celobrojni brojači u «for» petljama. Svaku promenljivu treba deklarisati u zasebnoj liniji koda, umesto korišćenja grupne deklaracije promenljivih odvojenih zarezima. Grupne deklaracije otežavaju pronalaženje deklaracionog bloka i komplikuju prepravke programa. Koliko je npr. truda potrebno 1 Iako je string ujedno i tip podatka, u Delphi-ju se on pre svega posmatra kao službena (rezervisana) reč. Zbog čega je ovo urađeno morate pitati ljude iz Borlanda. Službene reči se u Delphi editoru prepoznaju po tome što su zacrnjene (bold). 2

uložiti da bi se u sledećem primeru iskomentarisala deklaracija promeljive «Z» u poređenju sa situacijom da je u istom kodu potrebno iskomentarisati deklaraciju promenljive «K»? var X, Y, Z, W, Q: Real; var I: Integer; var J: Integer; var K: Integer; var L: Integer; Ako naziv i svrha promenljive nisu jasni, dodajte linijski komentar (//) na kraju reda iza deklaracije promenljive koji će objasniti za šta se promenljiva koristi i zbog čega. Kad kog to ima smisla i kad god je moguće postavite početne vrednosti promenljivih u istom redu gde su i deklarisane 2. var I: Integer = 0; 1.2. Dodeljivanje imena konstantama Za razliku od drugih programskih jezika koji preporučuju da se imena konstanti pišu isključivo velikim slovima uz upotrebu donje crte (ALL_UPPER_CASE), Delphi preporučuje da se imena konstanti pišu kombinacijom malih i velikih slova bez upotrebe donje crte, s tim da je početno slovo konstante uvek malo. Svrha konstanti je izbeganje upotrebe magičnih borjeva. Magični brojevi su bilo koji konkretni brojevi osim 0 i 1, kao npr. 27 ili $F5A (heksadecimalno) koji imaju neko «podrazumevano» značenje. Umesto toga, razmotrite definisianje konstante koja će broju dati neki smisao. Primer: Brush.Color := $00FFFF00; const clyellow = $00FFFF00; Brush.Color := clyellow; //Oh, ne! Koriste se magični brojevi!? //Da! Ovo je jasno samo po sebi 1.3. Imena funkcija (procedura, metoda i događaja) Uvek se potrudite da smislite razumljiv i smislen naziv koji sažeto opisuje svrhu funkcije. Za imena funkcija, procedura, metoda i događaja koristite mešana mala i velika slova počevši svaku novu reč u složenicama sa velikim slovom, kao i kod promenljivih. Prva reč u nazivu funkcije treba da bude glagol (npr. «Saberi»). Ako se naziv funkcije ne može osmisliti tako da u sebi sadrži glagol, tada uvođenje funkcije verovatno nije ni bilo potrebno. Ukoliko sam glagol nije dovoljan (npr. «Postavi»!?) glagolu treba dodati objekat (imenicu) kao npr. «PostaviPocetnuVrednost» koja će bolje objasniti smisao 2 Delphi dozvoljava postavljanje početnih vrednosti samo globalnim promenljivama. Lokalne promenjlive deklarisane unutar procedura ne mogu imati dodljene početne vrednosti. 3

funkcije. Ne treba izbegavati ni ubacivanje predloga kada je to neophodno radi bolje razumljivosti kao npr. «PostaviNaNulu» i «PostaviNulu» semantički nemaju isto značenje. Ako se koriste engleski izrazi za nazive funkcija, tada u ovim nazivima preovladavaju reči «Get» i «Set» 3. «Get» funkcije vraćaju vrednost nekog parametra, dok «Set» funkcije postavljaju neki parametra na zadatu vrednost. Tako npr. funkcija «GetTime» vraća aktuelno vreme dok funkcija «SetTime» postavlja sistemsko vreme na željenu vrednost (koja se prosleđuje kao parametar funkcije). Ako funkcija vraća istinitosnu (Boolean) vrednost koja može biti «True» ili «False», naziv funkcije treba da počinje sa odgovarajućim identifikatorom (npr. «JesteKraj» ili «IsDone»). Izbegavajte odrične reči u nazivima logičkih funkcija jer je nihova interpretacija dvosmislena. Npr. funkcija sa nazivom «NijeKraj» može vratiti vrednost «False» sa značenjem «Ne, nije kraj» ili «True» sa značenjem «Da, nije kraj» koji većini ljudi znače isto. Funkcije koje ne vraćaju vrednost u Delphi-ju se pišu bez praznih zagrada. Npr. «Exit», a ne «Exit()». 2. Komentari Komentari obezbeđuju dopunske informacije koje znatno utiču na razumljivost napisanog koda. Komentare treba koristiti kako bi se obezbedio sažet opis nekog dela koda i kako bi se onome ko pokušava da razume kod obezbedila dodatna objašnjenja onih stvari koje nisu trivijalno dostupne iz samog koda. Posebno je poželjno komentarisati originalne i neuobičajene kombinacije naredbi. Izbegavajte komentare koji su nepotrebno ponavljanje očiglednih informacija. Postoje tri neizostavna tipa komentara koji se upotrebljavaju u profesionalno napisanom softveru: 1. Komentar u zaglavlju programa koji identifikuje autora i namenu programa, daje informacije o autorkim pravima, verziji programa, poslednjim izmenama i sl. //************************************************************** // Naziv: Program za nakupljanje poena iz MSuI // // Opis: Ovaj program ne radi ama bas nista ali mi omogucava da // nakupim neke poene i tako (mozda) polozim ispit iz MSuI // // Autor: Pera Petrovic // Indeks: E10000 // Datum kreiranja: 20. februar 2009. // // Datum poslednje izmene: 31. maj 2009. // 3 Get daj i Set - postavi 4

// Napomene: Kunem se da sam ovaj kod napisao bas ja i da ga // nisam ukrao sa Interneta niti prepisao od kolega. // Ovom prilikom zelim da se zahvalim mami i tati koji su // mi omogucili skolovanje i odrekli se svog dugo // planiranog letovanja na Maldivima kako bih ja mogao // dobiti diplomu i raditi (daj, Boze) dobro placen posao. //************************************************************** 2. Samostalan linijski komentar koji objašnjava šta deo koda koji sledi treba da obavi. Odvajanje blokova koda praznim linijama i dodavanje komentara na početak svakog bloka omogućava brzu identifikaciju i razumevanje delova koda u kojima se odvijaju specifične akcije. // Racunanje srednje vrednosti 100 rezultata merenja Suma := 0; for I := 0 to 100 do Suma := IzmereneVrednosti[I]; SrednjaVrednost := Suma / 100; 3. Linijski komentar u produžetku linije sa kodom koji objašnjava šta ta linija koda radi. Ovo su komentari koje treba izbegavati, kao što se jasno vidi iz donjeg primera. Izuzetak od ovog pravila su programi koji predstavlja edukativne primere ili neke ekstremne situacije koje primenjuju globalne i sistemske prmenljive i funkcije SS = S1 + S2 + S3; //sabiranje tri broja (!?) A = SS / 3; //racunanje srednje vrednosti (!?) Suma := S1 + S2 + S3; SrednjaVrednost := Suma / 3; if Komanda = CmdPUT then PostaviTekst; //ovde bi bas dobro //dosao komentar (!!) Uvek dodajte komentare u toku pisanja odgovarajućih koda (ili čak neposredno pre toga) umesto da čekate dok ne završite ceo programa. Tako će komentari biti aktuelni, tačni i sažeti, te će doprineti razumevanju koda, umesto da samo služe za popunjavanje praznina. Kao što u svemu treba imati meru, tako treba izbegavati i preterano komentarisanje koda. Učestali komentari ukazuju na loše napisan, nespretan i amaterski kod. Kad kod dođete u iskušenje da dodate neki komentar, dobro razmislite o tome da li možete prepraviti kod tako da on sam po sebi postane razumljiviji. Vitičaste zagrade «{» i «}» mogu se koristiti za komentarisanje većeg dela koda prilikom razvoja i testiranja aplikacije kako bi se proverilo kako program funkcioniše ako se taj deo koda izostavi. Slično se mogu koristiti linijski komentari «//»za izostavljanje jedne linije koda i njeno lako naknadno vraćanje. Finalne verzije programa ne bi trebalo da sadrže nijednu komentarisu liniju koda. Kada se testiranje završi sve komentare čija je namena bila debagovanje treba ukoniti iz koda. 5

3. Formatiranje Formatiranje se odnosi na upotrebu uvlačenja, poravnanja i razmaka u smislu povećanja čitljivosti i preglednosti koda. Verovatno najvažniji faktor za pravljenje čitljivog koda je konzistentnost. Postoji mnogo rasprave oko toga da li treba koristiti 2, 3 ili 4 razmaka (space) za uvlačenje blokova koda, da li je bolje korisiti mala ili velika slova na početku naziva, da li je bolje iskazne zagrade poravnavati sa naredbom ili ih uvlačiti itd. Svi napori uloćeni u objašnjavanje da je baš taj i taj standard «savršen» zbog toga i toga, su potpuna besmislica jer je ključ dobre čitljivosti programa u tome da usvojite bilo koje pravilo koje vama najviše odgovara, ali da ga se potom dosledno držite do kraja. Tada će vaš kod biti razumljiv svakome bez obzira na njegovo lično estetsko mišljenje. U realnom svetu, organizacije i preduzeća usvajaju veoma različite standarde za svoje programe. Ipak svima im je zajedničko da je smisao ove lokalne standardizacije povećanje produktivnosti programera time što će se smanjiti broj varijanti i trijivajlnih odluka koje se moraju doneti prilikom timskog rada. Pridržavajući se dobro definisaih lokalnih standarda za formatiranje koda, programeri ne moraju lupati glavu nebitnim detaljima i mogu posvetiti svoje vreme i energiju rešavanju stvarnih, teških problema koji se odnose na funkcionisanje programa. 3.1. Uvlačenje Koristite 2, 3 ili 4 razmaka za uvlačenje koje treba da označi ugnežđivanje blokova koda, prema sopstvenom ukusu. Najčešće se u praksi u svetu koriste 3 razmaka (triple space) 4. Delphi je, naravno, izuzetak od ovog pravila i propisuje 2 razmaka za uvlačenje redova po svakom nivou. NE KORISTITE TABULATOR ZA UVLAČENJE REDOVA. Tabulator (Tab karakter) se veoma različito interpretira na različitim platformama i u različitim programima i dok vaš kod sa Tab karakterima može izgledati savršeno na vašem računaru, na nečijem drugom rezultati mogu biti iznenađujuće loši. Razmaci se uvek konzistnento prikazuju na svim računarima i u svim programima. S obzirom da je svaki *.pas fajl zapravo ASCII dokument u kome font nije definisan, može se i ovde desiti da dođe do sitnijih odstupanja (10 x i = iiiiiiiiii u poređenju sa 10 x w = wwwwwwwwww) zbog različite metrike pojedinih karaktera unutar istog fonta (probajte da svoj Unit1.pas fajl otvorite u Windows-ovom NotePad-u), ali je to daleko manji problem od tabulatora. Zbog toga Delphi za svoj editor koristi Courier New font koji ima istu metriku za svaki karakter (10 x i = iiiiiiiiii u poređenju sa 10 x w = wwwwwwwwww). Osim toga Delphi editor zamenjuje Tab karakter sa odgovarajućim brojem space karaktera. Ovo je posebno povoljno kada se u opciji Tools Editor Options... podesi upotreba «pametnog tabulatora». Ova opcija zamenjuje tab karakter sa space karakterima vodeći računa o početku svake reči iz linija koje su iznad tekuće. 4 C++, Java, JavaScript, PHP, CSS, PERL 6

U narednom primeru prikazano je kako se uvlačenje koristi za «ugnežđivanje» koda. procedure Form1.OnClick(Sender: TObject); var I: Integer; for I := 1 to 100 do if I > UslovZePrekid then Break; if I = 3 then //Hmmm! Magicni brojevi... MojaPromenljiva := MojaPromenljiva + 3; MojaPromenljiva := MojaPromenljiva * Pojacanje; end else MojaPromenljiva := MojaPromenljiva - 3; MojaPromenljiva := MojaPromenljiva / Slabljenje; end; if I = 7 then Continue; //Opet neki nerazumljiv magicni broj end; end;.. dva razmaka predstavljaju prvi nivo ugnežđenja (telo procedure)... četiri razmaka označvaju drugi nivo ugnežđenja (for petlja)... šest razmaka ukazuju na treći nivo ugnežđenja (if else) itd. 7

Uporedite gornji primer sa sledećom strukturom i pokušajte da neđete grešku koja se (namerno/slučajno?) potkrala: procedure Form1.OnClick(Sender: TObject); var I: Integer; for I := 1 to 100 do if I > UslovZePrekid then Break; if I = 3 then MojaPromenljiva := MojaPromenljiva + 3; MojaPromenljiva := MojaPromenljiva * Pojacanje; end; else MojaPromenljiva := MojaPromenljiva - 3; MojaPromenljiva := MojaPromenljiva / Slabljenje; if I = 7 then Continue; end; end; 3.2. Razmaci Koristite prazne redove kako biste popravili čitljivost svog koda i podelili ga u logične celine. Praznim linijma se najčešće odvajaju grupe naredbi posvećene obavljanju određenog zadatka. Poželjno je da svaki segment (pasus, blok) dobijen ubacivanjem prazne linije počne komentarom. Pogledajte dva donja primera i zaključite sami koji od njih je jasniji. Primer 1: //Trazi od korisnika unos kamate SimpleIO.Prompt('Unesite kamatu (u procentima): '); Kamata:=SimpleIO.ReadLine; if Kamata<0 then Exit; //Izracunaj i ispisi proviziju sa tacnoscu od jedne pare Provizija:=Glavnica*Kamata/100; Provizija:=Round(Provizija*100)/100; System.Out.PrintLn('Provizija: '+Provizija); Primer 2: //Trazi od korisnika unos kamate SimpleIO.Prompt('Unesite kamatu (u procentima): '); Kamata := SimpleIO.ReadLine; if Kamata < 0 then Exit; //Izracunaj i ispisi proviziju zaokruzenu na jednu paru Provizija := Glavnica * Kamata / 100; Provizija := Round(Provizija * 100) / 100; System.Out.PrintLn('Provizija: ' + Provizija); 8

Na čitljivost koda u velikoj meri utiče i upotreba razmaka između opreratora i nakon znakova interpunkcije. Po jedan razmak treba koristiti: sa svake strane binarnih operatora i operatora dodeljivanja bez obzira na prisustvo zagrada X * (A + B) / 100 I := 0 if N <= 1 then while Uslov1 and Uslov2 do umesto X*(A+B)/100 I:=0 if N<=1 then while (Uslov1)and(Uslov2) do nakon zareza u listi argumenata Sum(A1, 3, A4, 7) RеzultatiMerenja[0, J] Skup := [1, 5..7, 9] umesto Sum(A1,3,A4,7) RеzultatiMerenja[0,J] Skup := [1,5..7,9] nakon tačka-zareza na kraju deklaracije ili pre naredne naredbe I := 0; J := 0; K := 0; procedure Sredi(S: string; I: Integer); umesto I:=0;J:=0;K:=0; procedure Sredi(S:string;I:Integer); nakon dvotačke koja označava deklaraciju tipa promenljive ili funkcije var I: Integer; function Cos(Alfa: Real): Real; umesto var I:Integer; function Cos(Alfa:Real):Real; Razmak NE TREBA NIKADA koristiti za odvajanje: prvog kraktera iza zagrade i poslednjeg karaktera pre zagrade X * (A + B) / 100 RеzultatiMerenja[0, J] Skup := [1, 5..7, 9] 9

dok je nepravilno X * ( A + B ) / 100 RеzultatiMerenja[ 0, J ] Skup := [ 1, 5..7, 9 ] odvajanje naziva funkcije odnosno niza sa zagradom liste argumenata Sum(A1, 3, A4, 7) RеzultatiMerenja[0, J] procedure Sredi(S: string; I: Integer); dok je nepravilno Sum (A1, 3, A4, 7) RеzultatiMerenja [0, J] procedure Sredi (S: string; I: Integer); ispred dvotačke koja označava deklaraciju tipa promenljive ili funkcije var I: Integer; function Cos(Alfa: Real): Real; dok je nepravilno var I : Integer; function Cos(Alfa : Real) : Real; između karaktera u višesimbolskim operatorima I <> 0 J := K 3.3. Iskazne zagrade dok je nepravilno I < > 0 J : = K Iskaznim zagradama smatraju se parovi službenih reči koji okviruju delove teksta. Iskazne zagrade u Delphi-ju čine sledeći parovi službenih reči: end repeat until case end try except end try finally end record end 10

Iskazne zagrade se uvek pišu u posebnom redu. Reči koje pripadaju istom prau iskaznih zagrada moraju biti jednako uvučeni. Sve iskazne zagrade su službene reči i u Delphi editoru su boldovane (zacrnjene). 3.4. Dužina linije Izbegavajte linije duže od 80 karaktera. Lije koje su duže od 80 karaktera prelomiće se na nepredvidiv način prilikom štampanja ili prikaza koda u drugim editorima. Time se gubi efekat uvlačenja linija i kod postaje teži i nerazumljviji za čitanje. Ako linija koda ima više 80 karaktera (npr. kao posledica višestrukog uvlačenja linije) prelomite je sami prema jednom od sledećih opštih pravila: prelomite liniju NAKON zareza; prelomite linije PRE opreatora; poravnajte novu liniju sa početkom izraza u istom nivou sa prethodnom linijom. NekaProcedura(DugacakArgument1, DugacakArgument2, DugacakArgument 3, DugacakArgument4, DugacakArgument5); DugackoIme1 := DugackoIme2 * (DugackoIme3 + DugackoIme4 - DugackoIme5) + 4 * DugackoIme6; Delphi editor ima indikator u vidu vertikalne sive linije koji označava granicu između 80. i 81. karaktera. Kod programa će se smatrati ispravnim bez obzira na to sa li je neka njegova linija prešla 80 karaktera ili ne. Stoga ovaj indikator ima kozmetičku funkciju u smislu poboljšanja izgleda koda ukoliko on bude štampan na štampaču ili prikazivan u nekom drugom editoru. 11

Reference Kompletan standard za pisanje koda u Delphi-ju možete naći na http://www.econos.de/delphi/cs.html Takođe, preporučujem da pogledate link: http://en.wikipedia.org/wiki/coding_standard kao i brojne linkove koje možete dobiti na Google-u pretraživanjem pojma «Coding standards» za druge programske jezike. 12