aidiss/opendatagovlt — pull request #1 by sirex (2014-11-05 15:38:23+00:00)
Title: Atnaujinau projekto struktūrą

Esminiai pataisymai:

- Sukūriau `setup.py` failą. Šis failas yra būtinas kiekvienam python
projektui, kadangi jame nurodomos išorinių paketų priklausomybės, nurodoma
kaip turi būti leidžiami testai, kaip turi būti įdiegtas paketas ir t.t.

- Parašiau minimalius testus. Visas kodas turi būti padengtas testais, be testų
nėra garantijos, kad kodas iš viso veikia. Taip pat neaišku, kaip jis veikia.
Žodžiu, testai yra būtini.

- Pašalinau TAB simbolius, ir CRLF į LF. Python kode nerekomenduojama naudoti
TAB simbolių kodo atitraukimui ir rekomenduojama Unix tip LF eilučių
pabaigas. Tai gi susikonfigūruok savo teksto redaktorių, kad vietoj TAB
naudotų keturis tarpo simbolius, o taip pat eilučių pabaigas nustatyk į LF.

- Įkėliau README.rst failą. RADME failas yra būtinas, jame reikia parašyti kaip
paleisti testus, kaip įdiegti ir kaip naudoti paketą.

- Pašalinau Pandas biblioteką. Pandas yra tikrai geras įrankis ir patogu juo
naudotis, tačiau šiuo atveju jos visiškai nereikia, kadangi duomenys tiesiog
bus išsaugomi vėlesniam panaudojimui.

Pastabos:

- Kadangi tavo paketas ko gero ateityje bus integruojamas su kitomis sistemomis
būtina padaryti, kad atsiutimo ir kiti duomenų saugojimo keliai būtų
konfigūruojami. T. y. funkcijos turi priimti argumentą, kuriame nurodoma, kur
saugoti duomenis. Integruojant paketą su kitomis sistemomis, funkcijoms bus
paduoti atitinkami keliai. Tai taip pat naudinga rašant testus.

- Kodą reikėtų išskaidyti į nedidelius kodo vienetus ir juos ištestuoti
testuose, kiekvieną atskirai. Taip būsi įsitikinęs, kad kiekvienas tavo kodo
vienetas veikia tinkamai ir ateityje išvengsi problemų ieškodamas kuri vieta
kelia neveikia.

- Testuojant kodą visada reikia remtis kažkokiais pavyzdžiais. Negalima daryti
tikrų užklausų į realų resursą. Tam reikalui sukūriau tests/fixtures katalogą
ir jame įkėliau vieną pavyzdinį failą, kurio duomenis bandai nuskaityti. Tą
patį reikėtų padaryti ir su kitais resursais. Tik tada, kai programa tinkamai
veikia su testiniais duomenimis, bandyk ją leisti su tikrais duomenimis. Jei
paaiškėja, kad realiuose duomenyse yra išimtinė situaciją, tada pasiimti
fragmentą realių duomenų ir įsikėlęs juos į tests/fixtures pasirašyk naujus
testus ir pataisyk kodą.

- Gavus duomenis, reikėtų juos patikrinti ar teisingi duomenų tipai, ar nieko
netrūksta ir pan. Galų gale, gautus duomenis reikia konvertuoti į atitinkamus
Python tipus. Tam reikalui rekomenduoju naudoti
[colander](http://colander.readthedocs.org/) biblioteką.