Professional Documents
Culture Documents
1 StilProgramiranja PDF
1 StilProgramiranja PDF
PRIRODNO-MATEMATIKI FAKULTET
DEPARTMAN ZA
MATEMATIKU I INFORMATIKU
Duan Vajagi
Stil programiranja i
samodokumentujui kod
- Diplomski rad -
Predgovor
Jezik kao sredstvo komunikacije izmeu dva ili vie korisnika
mora da bude dostupan svim njegovim korisnicima. Za komunikaciju
izmeu ljudi postoje prirodni jezici. Meutim, prirodni jezici nisu
podesni za predstavljanje i prenoenje pojedinih informacija. U nekim
sluajevima prirodni jezici su se pokazali kao nedovoljno odreeni, jer
doputaju vieznanost i nisu dovoljno precizni.
Programski jezici slue za komunikaciju izmeu oveka i
raunara pa moraju biti dostupni i oveku i raunaru. Jezik raunara je
mainski jezik, nerazumljiv i nepraktian za oveka, dok je s druge
strane govorni jezik neprihvatljiv za raunar. Programski jezici su
znatno razumljiviji za oveka od mainskih jezika.
Pod raunarskim programiranjem se obino podrazumeva
ovekova aktivnost usmerena ka reenju nekog konkretnog problema
na raunaru. Problem se obino reava konstrukcijom algoritma za
reenje problema, a algoritam se zapisuje posredstvom programskog
jezika. Programski jezik dakle predstavlja sredstvo namenjeno za
komunikaciju oveka i raunara, a slui za opis algoritma na nain
razumljiv raunaru. Program tada predstavlja jedan nain zapisa
algoritma: reenja postavljenog problema. Moemo generalizovati:
program je spisak instrukcija (komandi) kojima se raunaru saoptava
nain reavanja odreenog problema.
Definicija dobrog programa se menjala tokom godina
razvoja programskih jezika. U pionirskim danima programiranja i
programskih jezika, dobar program je bio onaj koji se brzo izvrava na
raunaru i troi malo memorije. U dananje vreme dobrim programom
se pre svega smatra program koji je lak za itanje, razumevanje i
odravanje od strane oveka (programera), a ubrzavanje programa
korienjem programerskih trikova postaje manje vano. U
meuvremenu je takoe postalo jasno da se programiranje sastoji od
od dve aktivnosti: razvoja i odravanja programa, pri emu se na
odravanje programa (menjanje, prilagoavanje, ispravljanje greaka)
utroi 90% vremena od ukupnog ivotnog ciklusa programa.
Danas se organizovanjem itavog procesa oko razvoja,
testiranja i odravanja programa, kao i kreiranjem odgovarajuih
alatki za podrku itavom tom procesu, bavi posebna disciplina
raunarskih nauka: softversko inenjerstvo (eng. software
engineering).
Ovaj rad predstavlja specifian spoj stilova programiranja
(naina na koji programeri zapisuju svoj kod), kao i softverskog
inenjerstva kao optije naune discipline u odnosu na samo
programiranje. Osnovna namena ovog rada je da programerima (kako
poetnicima tako i iskusnijim) predoi neke tehnike pisanja koda
nezavisne od programskog jezika, koje e sam kod uiniti
preglednijim, itljivijim i estetski lepim. U drugom delu rada, koji je
blii softverskom inenjerstvu opisane su osnove korienja
programskih alata pri samom kodiranju, kao i niz praktinih saveta i
Duan Vajagi
Sadraj
Predgovor .................................................................................... 2
1. Uvod ......................................................................................... 6
1.1. Format i stil ........................................................................ 6
1.2 Osnove formatiranja ........................................................... 6
1.3 Tehnike formatiranja .......................................................... 9
1.3.1 Praznine ........................................................................ 9
1.3.2 Grupisanje .................................................................... 9
1.3.3. Prazne linije............................................................... 10
1.3.4 Poravnanje .................................................................. 10
1.3.5. Uvlaenje .................................................................. 10
1.3.6. Zagrade...................................................................... 10
1.4 Stilovi formatiranja ........................................................... 10
1.4.1 isti blokovi (Pure Blocks) ........................................ 10
1.4.2 Format kraja linije (Endline format) .......................... 11
1.4.3 Imitacija istog bloka (Emulating Pure Blocks) ........ 12
1.4.4. Begin-End kao granice bloka ................................... 13
1.4.5 Koji stil je najbolji? .................................................... 14
1.5 Formatiranje kontrolnih struktura ..................................... 15
1.5.1. Uvlaenje za begin-end par ....................................... 15
1.5.2. Dvostruko uvlaenje unutar para begin end.......... 15
1.5.3 Korienje praznih linija izmeu "pasusa" ................ 16
1.5.4. Formatiranje bloka koji se sastoji od jedne naredbe . 16
1.5.5 Formatiranje sloenih logikih izraza ........................ 17
1.5.6 Formatiranje GOTO naredbe ..................................... 17
1.6 Formatiranje pojedinanih naredbi ................................... 18
1.6.1 Korienje razmaka .................................................... 18
1.6.2 Korienje poravnanja................................................ 19
1.6.3 O duini naredbe ........................................................ 19
1.6.4 Formatiranje deklaracija podataka ............................. 23
1.7 Formatiranje komentara .................................................... 24
1.8 Formatiranje rutina ........................................................... 25
1.9 Formatiranje fajlova, modula i programa ......................... 28
2. SAMODOKUMENTUJUI KOD...................................... 33
2.1. Spoljna dokumenta .......................................................... 33
2.2. Programerski stil kao dokumentacija .............................. 33
2.3. Komentarisati ili ne? ........................................................ 34
2.4. Kljuevi za efektivne komentare ..................................... 34
2.4.1 Efikasno komentarisanje ............................................ 34
2.4.2. O stilovima komentarisanja ...................................... 35
2.4.3. Optimalan broj komentara ........................................ 36
2.5. Tehnike komentarisanja ................................................... 36
2.5.1 Komentarisanje individualnih linija ........................... 36
2.5.2 Endline komentari i problemi sa njima ...................... 37
4
1. Uvod
U ovom poglavlju obratiemo panju na estetsku komponentu
programiranja tj. planiranja i projektovanja izgleda tj. formata
izvornog koda. Cilj je da objasnimo neka od osnovnih pravila
zapisivanja izvornog koda programa tako da mi kao "pisci" budemo
zadovoljni njegovim izgledom i strukturom, a da sam kod bude lako
itljiv kako strunjacima tako i (manje-vie) poetnicima u
programiranju.
Integer;
Integer
SortElmt_t;
SortElmt_t;
begin
{ Replace element at lower boundary with an element guaranteed to be
first in sorted list}
Lower Boundary := Data[ FirstElmt-1];
Data [FirstElemt-1] := SortMin;
{ The elements in position FirstElmt through SortBoundary-1 are always
sorted. In ich pass through the loop, SortBoundary is increased, and the
element at positionof the new SortBoundary probably isn't in its sorted
place in the array, so it's inserted into the proper place somewhare
between FirstElmt and SortBoundary. }
for SortBoundary := FirstElmt +1 to LastElmt do
begin
InsertVal := Data [SortBoundary];
InsertPos :=SortBoundary;
while InsertVal < Data [InsertPos-1] do
begin
Data[InsertPos] := Data[InsertPos-1];
InsertPos := InsertPos-1;
end;
Data [InsertPos] :=InsertVal;
end;
{replace original lower-boundary element}
Data[ FirstElmt-1] :=LowerBoundary;
end; {InsertionSort}
REZIME:
to se tie strukture i rasporeda tj. formata samog koda isti cilj
se moe postii na vie naina, ali je bitno da kada se odluite za jedan
nain, da se njega drite do kraja pisanja programa. Ukratko, ciljevi su
sledei:
a) precizno i dosledno prikazati logiku strukturu koda (veina
programera koristi praznine i nazubljenja tj. uvlaenja
pojedinih redova, da bi logike celine bile uoljivije)
b) poboljanje itljivost programa je prioritet
c) struktura koda mora biti laka za pregledanje i naravno kasnije
odravanje
Dakle jedno od osnovnih pravila je:
PIITE PROGRAME TAKO DA SU RAZUMLJIVI I ITLJIVI
PRVO LJUDIMA, PA TEK ONDA KOMPJUTERIMA
1.3.1 Praznine
Predstavljaju glavne alate za prikazivanje programske strukture
(razmaci, tabulatori, prazne linije); pomou njih odvajamo pojedine
celine koda slino kao to su i knjige podeljene na poglavlja, pasuse,
reenice.
1.3.2 Grupisanje
Direktno je povezano sa prazninama i to tako to instrukcije
koda koje ine jednu celinu treba da budu grupisane jednakim
uvlaenjem.
1.3.4 Poravnanje
Treba poravnati sve objekte tj. elemente koji po definiciji ine
smislenu celinu, npr. znak jednakosti prilikom naredbe dodeljivanja
vrednosti, ili otvorenu i zatvorenu zagradu prilikom pisanja komentara
itd; u kombinaciji sa prazninama i grupisanjem poveava se itljivost
programa i logike celine samog koda.
1.3.5. Uvlaenje
Posebno interesantno za prikazivanje logike strukture koda, u
praksi se popularno zove i nazubljenje; grupa naredbi (koja ini
celinu) mora tj. treba da bude isto nazubljena iliti uvuena, a ako
postoji "ugnjedena" podgrupa ona bi trebalo da se uvue jo udesno i
tako oslika logiku celinu koda.
1.3.6. Zagrade
Upotreba zagrada se esto preporuuje, a naroito kada imate
izraz sainjen od vie podizraza, jer nikad ne znate kako pojedini
prevodioci tretiraju i izraunavaju izraze. Posmatrajmo sledee
primere u okjima su izostavljene zagrade. Izrazi su napisani u
programski jezicima C, Pascal i Basic redom.
12+4%3*7/8
12+4mod3*7div8
12*mod3*7/8
Primer 4. Razliiti izrazi bez upotreba zagrada
11
A.
B.
C.
D.
12
prva naredba
begin
B.
druga naredba
C.
ostale naredbe
D.
end
13
A.
strukture
begin
B.
C.
end
Dakle, par begin-end nam slui kao "granica" tj. poetak i kraj
bloka naredbi koje ine telo kontrolne strukture koja poinje
naredbom A. U primeru 8 su navedena dva konkretna primera naredbi
koje ilustruju ovaj format:
if PixelColor = RedColor then
begin
statement 1
statement 2
...
end;
Poetak bloka tj. naredba begin kao i kraj bloka tj. naredba
end su poravnate sa for naredbom koja je u stvari njihova kontrolna
struktura, a ovde se vizuelno ne vidi da je blok naredbi logika celina
unutar same kontrolne strukture i da se uopte odnosi na nju.
15
kontrolna struktura
begin
end
= EditWindow.Dimensions;
= EditWindow.Title;
= UserPreferences.BackgroundColor;
Cursor.Start
= StartingScanLine;
Cursor.End
= EndingScanLine;
Cursor.BlinkRate
= EditMode.BlinkRate;
SaveCursor ( Cursor );
SetCursor ( Cursor );
16
if (expression) then
begin
one-statement
end;
17
18
=
=
=
=
=
InputName
InputAdress
InputPhone
Title
Department
EmployeeName = InputName
EmployeeAdress = InputAdress
EmployeePhone = InputPhone
BossTitle = Title
BossTitle = Department
Primer 20. Razdvajanje logikih blokova upotrebom prazne linije
Poravnanje nije sporno, ali u primeru 19 praktino imamo dva
logika bloka i to: podatke o zaposlenima i o njihovim efovima pa bi
bilo mnogo lepe da to zapiemo kao u primeru 20.
Na ovaj nain, samo smo pokazali razliku izmeu izmeu
akcija sa zaposlenima i efovima odvajajui ih prazom linijom i
koristei razliito poravnanje znaka jednakosti.
Primer
22.
Prelamanje
operatora +
dugake
naredbe
upotrebom
20
21
DrawLine
(
Window.North,
Window.South,
Window.East,
Window.West,
CurrentWidth,
CurrentAttribute
);
SetFontAttributes
(
Font.FaceName,
FontSize,
Font.Bold,
Font.Italic,
Font.SyntheticAttribute[ FontID ].Underline,
Font.Synthetic.Atribute[ FontID ].Strikeout
);
22
SortBoundary;
InsertPos;
InsertVal;
LowerBoundary;
23
24
25
MaxEmployees,
Employees,
InputFile,
EmployeeCount,
IsInputError)
...
void InsertionSort(Sort_Array
int
int
Primer
35.
Data,
FirstElmt,
LastElmt)
Poboljanje prethodnog
uvlaenja za argumente
koda
korienjem
26
BOOLEAN ReadEmployeeData
(
int
MaxEmployees,
EMP_LIST *
Employees
FILE *
InputFile,
int *
EmployeeCount,
BOOLEAN *
IsInputError
)
...
void InsertionSort
(
Sort_Array
int
int
)
Data,
FirstElmt,
LastElmt
27
void InsertionSort
(
SORT_ARRAY Data,
int
FirstElmt,
int
LastElmt
)
(
...
)
Primer 38. Primer novog stila pisanja deklaracije u C-u
29
30
'***********************************************************
' MATHEMATICAL FUNCTION
'
' This module contains the program's mathematical function.
'***********************************************************
'---------------------------------------------------------------------------------------Function Max! ( Arg1!, Arg2! )
'---------------------------------------------------------------------------------------'find the arithmetic maximum of Arg1 and Arg2
if ( Arg1! > Arg2! ) then
Max! = Arg1!
else
Max! = Arg2!
endif
end Function
'--------------------------------------------------------------------------------------Function Min! ( Arg1!, Arg2! )
'--------------------------------------------------------------------------------------'find the arithmetic minimum of Arg1 and Arg2
if ( Arg1! < Arg2! ) then
Min! = Arg1!
else
Min! = Arg2!
endif
end Function
31
definicije konstanti
definicije makroa
definicije tipova
REZIME
32
2. SAMODOKUMENTUJUI KOD
Pored formatiranja samog koda, dobra dokumentacija koda je
stvar programerskog iskustva i etike. Dokumentacija softvera moe da
postoji u mnogo razliitih formi, ali emo se u ovom poglavlju baviti
uglavnom samo komentarima u samom programu.
33
Variable
Meaning
------------------XPOS..............X Coordinate Position (in meters)
YPOS..............Y Coordinate Position (in meters)
NDSCMP........Needs Computing (= 0 if no computation is needed,
= 1 if computation is needed)
PTGTTL..........Point Grand Total
PTVLMX.........Point Value Maximum
PSCRMX..........Possible Score Maximum
/*************************************************************
* module: GIGATRON.C
*
*
*
* author: Dwight K. Coder
*
* date:
July 4, 2014
*
*
*
* Routines to control the twenty-first century's code evaluation
*
* tool. The entry point to these routines is the EvaluateCode()
*
* routine at the bottom of this file.
*
*
*
*************************************************************/
35
/********************************************************
module: GIGATRON.C
author: Dwight K. Coder
date:
July 4, 2014
Routines to control the twenty-first century's code evaluation
tool. The entry point to these routines is the EvaluateCode()
routine at the bottom of this file.
********************************************************/
36
; R. I. P. L. V. B.
37
38
39
41
42
43
var
CursorX:
CursorY
AnennaLength: Real;
SignalStrength: Integer;
CharCode: 0..255;
CharAttrib: Integer;
CharSize: 4..127
LSB
0
1-2
3
4
...
14
15
StatusFlags: integer;
45
46
'*********************************************************
'
' Name: CopyString
' Purpose:
'
' Algorithm: It gets the length of Source$ and then copies each
'
character, one at a time, into Target$. It uses
'
the loop index as an array index into both Source$
'
and Target$ and increment the loop/array index
'
after each character is copied.
'
' Input:
Input$
The string to be copied
'
' Outputs:
Output$
The string to receive the copy of Input$
'
' Interface Assumptions:
None
'
' Modification History:
None
'
' Author:
Dwight K. Coder
' Date Created:
10/01/92
' Phone:
(222) 555 - 2255
' SSN:
111 - 22 - 3333
' Eye Color:
Green
' Maiden Name:
None
' Blood Type:
AB' Mothers Maiden Name: None
'
'*********************************************************
47
48
REZIME
Ako se komentarisanje uradi siromano, to je protraeno
vreme, a ponekad moe i da kodi. Isplativo je ako je komentarisanje
dobro uraeno. Listing izvornog koda bi trebao da sadri veinu
kritinih informacija o programu. Listing je jedini dokument koji se
garantovano nee zagubiti dok je program u toku, a i korisno je imati
vane informacije zajedno sa kodom. Dobri komentari su napisani da
izraze nameru. Oni ne objanjavaju ZATO nego KAKO. Komentari
treba o kodu da kau one stvari koje sam kod ne moe. Dobar kod je
sam sebi najbolja dokumentacija. Pre nego to dodate komentar kodu,
zapitajte se kako moete da poboljate kod da vam taj komentar bude
nepotreban. Poboljajte kod, a onda ga dokumentujte da ga uinite jo
jasnijim.
50
3. PROGRAMSKI ALATI
Moderni programerski alati smanjuju koliinu vremena
potrebnu za konstruisanje softverskih proizvoda. Korienje vrhunskih
alata moe poveati produktivnost rada i preko 50 procenata.
Programerski alati takoe mogu smanjiti koliinu smarajueg posla
oko detalja koje programiranje zahteva. Cilj ovog poglavlja je da opie
alate koje moete napraviti ili kupiti za pomo pri konstruisanju
softverskog proizvoda. Ovo poglavlje je koncentrisano u dva pravca.
Prvi je da pokriva iskljuivo konstrukcijske alate, a drugi je da ovo
poglavlje pokriva vrste alata, a ne odreene marke iz prostog razloga
to se verzije, proizvodi pa i same kompanije koje ih proizvode veoma
brzo menjaju da nema smisla diskutovati o tome jer dok ovo itate
verovatno se pojavio ve neki novi alat, nova verzija starog ili novi
proizvoa tako da vam je vanije da znate koja vrsta alata vam treba.
51
direktna, u kom sluaju se isto ime koristi dva puta, ili moe
biti suptilnija gde razliita imena oznaavaju isti element.
Renik podataka sadri ime, tip i atribute svake promenljive.
Takoe, moe sadravati beleke o tome kako je promenljiva
koriena. U vie-programerskom okruenju renik bi naravno
trebao biti dostupan svim programerima.
mree
matematike operacije
kompresija podataka
itd
55
56
57
Primer
REZIME:
60
VELIINA PROGRAMA
IZRAENA U LINIJAMA KODA
2K
2K - 16K
16K - 64K
64K - 512K
512K+
61
PROCENAT
PROGRAMERA
5 - 10 %
5 - 10 %
10 - 20%
30 - 40%
30 - 40%
komunikacioni putevi
izmeu dva programera
komunikacioni putevi
izmeu tri programera
komunikacioni putevi
izmeu pet programera
komunikacioni putevi
izmeu etiri programera
62
100 %
Integracija
Procenat
vremena
razvoja
kodiranje i ispravljanje greaka
Konstrukcija
detaljan dizajn
Arhitektura
0%
2K
8K
32 K
128 K
63
512 K
planiranje
menadment
komunikacija
razvoj uslova
arhitektura
integracija
otklanjanje defekata
testiranje sistema
proizvodnja dokumenata
poeni
kategorija
1.
ne,
reprogramira
zahtev za
originalnou se na drugoj
opremi
minimalna
ograniena,
primenjuje
se novi
interfejs u
novom
umeren
veliki
64
ocena
okruenju
ogranien
ograniena
fleksibilnost
fleksibilan
format, za
vie
ciljeva
veoma
fleksibilan,
multi
platformski
odseci
ministarstva
irom sveta
2.
nivo optosti
strogo
ogranien,
samo za
jednu svrhu
3.
raspon
operacija
lokalna
deo
komande
jedna
komanda
vie
komandi
4.
promena u
opsegu i
ciljevima
ne
retko
povremeno
frekventno
neprestano
vie maina,
standardni
periferni
sistem
vie
maina,
sloeni
periferni
sistem
vie maina,
oprema za
automatski
ulaz-izlaz i
prikaz
5 - 10
10 - 18
18 i vie
5.
sloenost
opreme
jedna
maina
jedna
maina
proirena
perifernim
sistemom
6.
broj uesnika
u projektu
1-2
3-5
7.
veliina
projekta
8.
kritine take
9.
10.
modifikacija
posle
proseno
unos
podataka
posle
proseno
3 - 15 K
15 - 70 K
70 - 200 K
procesiranje
podataka
rutinske
operacije
lina
bezbednost
opstanak
jedinice
nacionalna
odbrana
2 i vie
nedelja
1-2
nedelje
3 - 7 dana
1 - 3 dana
svakodnevn
o
2 i vie
nedelja
1-2
nedelje
1 - 7 dana
1 - 24 asa
9 - 60
minuta
(interaktivn
o)
vii
programski
jezici i
ograniena
upotreba
asemblera
vii
programski
jezici i ira
upotreba
asemblera
asembler
mainski
jezik
ogranieno
umereno
srednje
jako
11.
programski
jezici
vii
programski
jezici
12.
softver je
razvijen kao
konkurentski
ne
ukupno
Program moe biti bodovan od 12-60 poena. Ocena 12 znai da su
zahtevi projekta lagani i da je potrebno malo formalnosti. Ocena 60,
znai da je projekat ekstremno zahtevan i da mu je potrebno to je
mogue vie strukture. U softverskom razvoju, to je projekat
formalniji, vie papira morate generisati da se uverite da ste uradili
domai. Dokumentaciju o projektu ne kreirate zbog nje same, ve
ona treba da vas natera da paljivo planirate i svoj plan objasnite
svima ostalima. Dokumentacija je opipljiv propratni efekat pravog
posla koji radite dok planirate i konstruiete softverski sistem.
65
uestalost greaka
0 0 0.5
2 4 -
2000
1250
1000
500
250
REZIME
)
68
5. UPRAVLJANJE
KONSTRUKCIJOM
SOFTVERSKIH PROJEKATA
Krajem dvadesetog veka upravljanje razvojem softvera je
postalo teak zadatak. U ovom poglavlju emo samo prodiskutovati
nekoliko specifinih tema o upravljanju softverskim projektima i
izradi softvera.
69
70
REZIME
72
motivacija tima
kvalitet menadmenta
73
obim dokumentacije
ciljevi projekta
5.4. Metrika
Sam izraz "metrika" se odnosi na bilo koju jedinicu mere
vezanu sa razvojem softvera. Naveemo neke: broj linija koda, broj
defekata, broj defekata na hiljadu linija koda, broj defekata po
modulu, broj globalnih promenljivih, broj sati rada potrebnih za
realizaciju koda...
74
Opti kvalitet
ukupan broj defekata
broj defekata po rutini
prosean broj defekata na hiljadu
linija koda
broj greaka koje je detektovao
kompajler
Odravanje
broj parametara prosleenih
svakoj rutini
broj lokalnih promenljivih
korienih u svakoj rutini
broj poziva podrutina u svakoj
rutini
kompleksnost algoritma svake
rutine
broj linija koda u svakoj rutini
izvorni
posao privatno
kod
konverzacija 4%
17%
7%
razgovor sa
1%
menaderom
telefon
2%
1%
itanje
14%
beleke
13%
odsutan
4%
1%
etnja
2%
2%
1%
ostalo
2%
3%
3%
ukupno
35%
29%
13%
aktivnost
2%
1%
4%
7%
testiranje
tehnika
ukupno
ostalo
programa
uputstva
1%
32%
1%
2%
6%
6%
1%
1%
5%
2%
76
1%
2%
1%
1%
3%
18%
14%
15%
6%
11%
100%
stil uvlaenja
77
stil komentarisanja
prvih 25%
78 m2
poslednjih 25%
46 m2
57% da
29% da
62% da
19% da
52% da
10% da
76% da
19% da
78
38% da
76% da
57% da
29% da
REZIME
80
6.0. ZAKLJUAK
Poznavanjem osnova programiranja i sintakse bilo kog
programskog jezika pisanje programa se u optem sluaju ne razlikuje
od obrade teksta u nekom od tekst procesora. Dokument kreiran tekst
procesorom moe biti kvalitetno i efikasno formatiran ili ne, u
zavisnosti od toga ko ga je kreirao. Isto vai i za programe.
U prvom delu ovog rada date su smernice i uputstva koje nam
pomau da napisan kod bude pregledan, itljiv, lak za odravanje.
Postoji vie razliitih tehnika i stilova formatiranja pojedinanih
naredbi, kontrolnih struktura, modula, rutina. Vizuelno efikasno
formatiranje se moe postii na vie naina, a cilj je da se pobolja
itljivost samog koda. Veoma je vano da kada se jednom odluimo
za odreeni stil formatiranja, taj stil dosledno primenjujemo do kraja
napisanog programa. Precizno i dosledno moramo prikazati logiku
strukturu koda (uglavnom se koriste praznine ili uvlaenja pojedinih
redova). Tako e struktura koda biti laka za pregledanje i kasnije
odravanje.
Pored samog formatiranja, programska dokumentacija je
takoe vaan aspekt kvalitetnog softverskog proizvoda. 2/3 svih
napora na velikim softverskim projektima odlazi na kreiranje
dokumentacije. Dokumentacija se sastoji od informacija unutar i izvan
listinga samog koda. Samim tim dobar programerski stil je sastavni
deo unutranje dokumentacije. Odabiranjem dobrih imena
promenljivih, rutina, zatim korienje imenovanih konstanti, jasna
struktura podataka kao i dobra programska struktura ine sastavni deo
unutranje dokumentacije.
Komentarisanje i tehnike komentarisanja su takoe veoma
vane kako za sam izgled koda tako i kao programska dokumentacija.
Preporuka je da koristimo sumirajue komentare (komentari koji
objanjavaju vie linija koda) kao i komentare koji izraavaju nameru
koda (oni ne objanjavaju ZATO nego KAKO). Komentari na kraju
linije ili endine komentari su korisni prilikom deklaracije podataka,
kao i za komentare za beleke o odravanju.
Organizovanje itavog procesa oko razvoja, testiranja i
odravanja programa, kao i kreiranjem odgovarajuih alatki za
podrku itavom tom procesu, bavi posebna disciplina raunarskih
nauka: softversko inenjerstvo (eng. software engineering).
Drugi deo rada je blii softverskom inenjerstvu. Moderni
programski alati smanjuju koliinu vremena potrebnu za konstruisanje
softverskih projekata i poveavaju produktivnost i preko 50%. Alati
dizajna koji su trenutno u opticaju su uglavnom grafiki alati koji
kreiraju dijagrame dizajna i esto su uklopljeni u CASE alat sa irim
funkcijama. Alati izvornog koda (editori, brauzeri...) su povezani sa
editovanjem izvornog koda. Takoe, na tritu je dostupan i irok
spektar alata za rad sa izvrnim kodom. Vano je rei da veinu ovih
programskih alata moemo i sami kreirati.
Upravljanje softverskim projektima i izradom softvera je
krajem dvadesetog veka postalo teak zadatak. Tehnike poveanja
81
82
LITERATURA
[1]
[2]
[3]
[4]
83
Kratka biografija
Fotografija
kandidata
_________________________
(Duan Vajagi)
84
Monografska dokumentacija
Tekstualni tampani materijal
Diplomski rad
Duan Vajagi
dr. Mirjana Ivanovi
Stilovi programiranja i
samodokumentujui kod
srpski
srpski / engleski
Srbija
Vojvodina
2007
autorski reprint
Novi Sad, Trg Dositeja Obradovia 4
6/88/0/5/60/0/0
85
FO
Nauna oblast:
NO
Nauna disciplina:
ND
Kljune rei:
PO
UDK
uva se:
U
Vana napomena:
VN
Izvod:
Raunarske nauke
Obrada teksta, programiranje
Formatiranje koda, stilovi
formatiranja, softeverski projekat
IZ
Datum prihvatanja teme
NN vea
DP
Datum odbrane:
DO
lanovi komisije:
KO
Predsednik:
lan:
lan:
jul 2007
86
Monograph documentation
Textual printed material
Graduation thesis
Duan Vajagi
dr. Mirjana Ivanovi
Programming style and
selfdocumenting code
TI
Language of text:
Serbian
LT
Language of abstract:
Serbian/English
LA
Country of publication: Serbia
CP
Locality of publication: Vojvodina
LP
Publication year:
2007
PY
Publisher:
Author's reprint
PU
Publ. place:
Novi Sad Trg D. Obrdovia 4
PP
Physical description:
6/88/0/5/60/0/0
(no.
chapters/pages/bib.refs/tables/figures/graphs/appendices)
PD
87
Scientific field:
SF
Scientific discipline:
Key words:
Computer Science
Text Processing, Programming
Code Formating, Style Formating,
software project
UC:
Holding data:
HD
Note:
N
Abstract:
AB
Accepted by the Scientific Board on: July 2007
Defended:
DE
Thesis defend board:
(Degree/first and last name/title/faculty)
President:
dr. Mirjana Ivanovi, full professor,
Faculty of Science, Novi Sad
Member:
dr. Zoran Budimac, full professor,
Faculty of Science, Novi Sad
Member:
dr. Dragan Maulovi, associate
professor, Faculty of Science, Novi Sad
88