-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
58 lines (50 loc) · 3.23 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Martin Bulant a Cestmir Houska
Changelog 1. ukolu z DPP
Nejprve bylo treba zdrojove kody opravit tak, aby byly vubec spustitelne.
V jednom miste bylo treba specifikovat argument genericke tridy ArrIter. Dale
jsme zmenili nazev metody "set" na "setProperty", coz je sice zmena rozhrani
tridy, ale podle prikladu ze zadani to tak je spravne.
Dalsi zmeny, ktere jsme provedli ve zdrojovem kodu zadani se daji rozdelit
do tri skupin: zmeny nazvu funkci, parametru a promennych, znemy stylu kodu a
refactoring nesrozumitelnych nebo prilis slozite zapsanych konstrukci. Tyto tri
skupiny rozebereme postupne
Zmeny nazvu:
Hodne zmen nazvu, ktere jsme provedli, meni nazvy lokalnich promennych, aby
byl lepe citelny kod. Tyto promenne maji sice kratkou dobu platnosti, ale presto
neuskodi, kdyz misto nic nerikajiciho nekolikapismenneho nazvu pouzijeme kratke
slovo. Priklady takovychto zmen jsou napriklad "nm" na "name", "trg" na
"target", "fld" na "field", "str" na "setter". U posledne jmenovaneho to bylo
zvlaste matouci, protoze jsme si mysleli, ze jde o string. Timto zpusobem jsme
hodne menili i nazvy parametru v metodach. Stejne tak jsme odstranili zkraceniny
v nazvech metod.
Na vice popisnejsi nazvy jsme zmenili i jmena trid. Zvlaste vhodne je to dle
naseho nazoru napriklad u tridy ConfExp, protoze bude pristupna zvnejsku. Tuto
tridu jsme tedy prejmenovali na ConfigurationException. ArrIter jsme
prejmenovali na ArrayIterator.
Na druhou stranu, nektere nazvy byly zbytecne dlouhe. Napriklad
AllDeclFieldsIterable jsme zmenili na FieldsIterable, bez vetsi zmeny semantiky
nazvu tridy.
Nazvy promennych "e" a "ce" v chytani vyjimek jsme nechali, nebot maji
extremne kratkou dobu zivota a navic je to v Jave jiz celkem vzita konvence.
Styl kodu:
Styl kodu v zadani byl velice roztrouseny, takze jsme ho sjednotili. Vsude
jsou nyni mezery kolem argumentu funkci, krome mist, kde jsou zavorky bez
parametru - "()". Za vsechny if prikazy jsme take pridali zavorky, ohranicujuci
blok. Stejne tak jsme sjednotili styl odsazovani na ctyri mezery na jedno
odsazeni a odstranili prebytecne prazdne radky.
Refactoring a prehlednost kodu:
Prepsali jsme if vetve tak, abychom ukoncovali vetve co nejdrive a zmensili
tak pocet bloku odsazeni. ("if (bad) return" misto "if (good) { ... }")
Vnorene podminky v metode "set" jsme rozdelili na dve casti, odpovidajici
field-based properties a setter properties. Zde nam prislo zbytecne rozhrani
PropertySetter, jehoz jedinym ukolem bylo vytvorit instanci objektu tridy, ktera
poskytovala metodu, ktera byla jednou zavolana a pote byl objekt zahozen. Toto
jsme zmenili na prime volani dane metody v mistech, kde byl PropertySetter
pouzivan. Takto nam vznikly metody "findPropertySetter", "setUsingMethod"
"findProperty" a "setDirectly".
V metode "setUsingMethod" byla tezce srozumitelna disjunkce tri podminek,
ktera overovala spravnou formu setter metody. Tuto disjunkci jsme zprehlednili
vytahnutim podminek ven pred if a jejich pojmenovanim.
Na mnoha mistech se pouziva zmena pristupnosti u properties, takze jsme
zvazovali jeji zabaleni do privatnich metod, ale to jsme nakonec zavrhli, nebot
by tyto metody mely stejne vetsinou jenom jeden radek kodu.