Podrška #25271
ZatvorenF18, programmer's tips
100%
Povezani tiketi 3 (0 otvoreno — 3 zatvorenih)
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
mađarsku notaciju izbaciti, koristimo ruby "like" notaciju imenovanja varijabli¶
podsjećam ovo je mađarska notacija:
cSection cDatabase cUserName
mjenjamo to na
section database user_name
koristimo tmp_ i slične prefixe za kontekst varijabli. Ne koristimo "c", "l" za određivanje tipa varijable.
u postojećim funkcijama se ostavlja zatečeno stanje, ali se to primjenjuje u novim:
primjer ini_write, ini_read
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Naslov promijenjeno iz F18, upute za programera u F18, programer's tips
Izmjenjeno od Ernad Husremović prije oko 13 godina
upoznavanje funkcija - priprema, harbour playground¶
ako imamo neki bug, pravimo jednostavne izolovane testove u harbour_playground-u
https://github.com/knowhow/harbour_playground/blob/master/hash/hello.prg
Na ovaj način praktično pripremamo code snippet-e i dokumentaciju funkcija koji su od koristi za čitav tim.
Bez toga svaki developer otkriva toplu vodu. vsasa je potrošio puno vremena na hash upoznavanju, da bih i ja to isto vrijeme morao potrošiti. Da je napravljen playground/hash, sigurno bi moje učenje bilo puno brže.
Izmjenjeno od Ernad Husremović prije oko 13 godina
uvođenje novih funkcija - review¶
kada se naprave sve potrebne pripreme, onda pristupamo pripremi novih funkcija.
Veoma je bitno da te funkcije budu jasno napisane i jednostavne za korištenje:
da ovaj ini_read ne valja
vidi se kada pogledamo kako se koristi:
ponavljanje ini parametra
s obzirom da imamo dvije lokacije predefinisane lokacije, u konačnoj verziji se prosljeđuje logička varijabla koja kaže da li se snima u globalni ili lokalni ini baze.
Zato je za generičke funkcije kakva je ova (common/) najbolje napraviti prototip u harbour_playground.
Ako to traži puno vremena može se napraviti prototip rješenja u f18 i primjer korištenje koji se kasnije komentariše i predstavlja dobru dokumentaciju korištenja.
Izmjenjeno od Ernad Husremović prije oko 13 godina
dokumentacija funkcije i načina korištenja¶
kod novih funkcija bitno je da se na ticket ne stavlja samo commit koji je za drugog čitaoca često beskorisna informacija. Bitno je staviti linkove na funkcije opisati njihovu svrhu i staviti primjere korištenja opet putem linkova.
slično kako sam ja pisao komentare na ovaj ticket
Izmjenjeno od Ernad Husremović prije oko 13 godina
uvođenje novih funkcija - funkcionalni review¶
iako sam već dosta rekao, funkcionalni review je bitna stavka kod dizajniranja novih funkcija.
Kako će se funkcija koristiti najčešće ?
Na šta treba pripaziti da bi se postigle dobre performanse ?
Podsjetiću: ja sam kod ini_read/write uočio da se, shodno logici rada hb_ini funkcije, vrši puno puta iščitavanje i pisanje kompletnog ini fajla.
To funkcionalno svojstvo je odredilo konačni dizajn f18 read/write funkcija.
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Naslov promijenjeno iz F18, programer's tips u F18, programmer's tips
Izmjenjeno od Ernad Husremović prije oko 13 godina
dummy funkcije u common/dummy.prg¶
sve funkcije koje nisu implementirane trebaju ići u common/dummy.prg da znamo šta smo to samo "krpili" da bi build "progulio"
Izmjenjeno od Ernad Husremović prije oko 13 godina
Zašto F18 programmer's tips ?¶
Zato što smo već sada u F18 utrošili puno vremena.
Trebamo jasno raščlaniti improvizacije koje su rezultat kompromisa usljed nedostatka vremena i ono što se zove kvalitetno programiranje.
Ne smijemo dopustiti da se sa F18, barem kod novog koda, stvara nova "kodna džungla"
F18 jeste i biće puno "legacy" koda, ali za očekivati je da će se shodno potrebama taj kod postupno čistiti barem tamo gdje postoje potrebe za stalnim promjenama.
Na kraju krajeva, očekujemo da će F18 za mnoge korisnike biti dugoročno rješenje.
Izmjenjeno od Ernad Husremović prije oko 13 godina
produktivno korištenje vim-a¶
zajedničkim radom uočio sam da vsasa stalno ulazi/izlazi iz vim-a za svaku korekciju i radi grep.
pokazao sam mu ":vimgrep" koja radi unutar grupe fajlova ali je on i kasnije prema svojim navikama nastavio raditi izađi/grep/uđi.
sa tom praksom za ovakav commit developeru bi bio potreban čitav dan.
programerski editor se treba produktivnije koristiti. Na to treba utrošiti vrijeme. U T0_toolbox ima vim_usage.md.
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Prioritet promijenjeno iz Normalan u Odmah riješiti
Izmjenjeno od Ernad Husremović prije oko 13 godina
harbour source code sa string konstantama i našim dikariticima treba biti utf-8¶
Izmjenjeno od Saša Vranić prije oko 13 godina
Lokalne varijable treba da imaju prefix "_"¶
umjesto:
function xzx() local aArr := {} local cFirma := ""
treba:
function xzx() local _array := {} local _firma := ""
Izmjenjeno od Ernad Husremović prije oko 13 godina
poveži se na mjesto gdje smo to odlučili
Izmjenjeno od Saša Vranić prije oko 13 godina
Kako se koriste tabele p_xyx() (funkcije za otvaranje šifrarnika)¶
Uzet ću primjer funkcije p_konto(), otvaranje šifrarnika konta
1) Jednostavno otvaranje tabele radi browse-a, menij šifrarnika¶
Da bi jednostavno otvorili šifrarnik konta radi browsanja podataka jednostavno pozivamo:
p_konto()
2) Povezivanje sa nekom tabelom na uslovima, recimo uslovima izvještaja¶
Da bi napravili link sa tabelom konta koristimo ovako
@ 20, 2 SAY "Odaberi konto:" GET _id_konto VALID p_konto( @_id_konto )
Ovo će nam ako smo unjeli ispravnu šifru vratiti tabelu konta pozicioniranu na tom zapisu, ako ne, onda će otvoriti šifrarnik konta, te nakon odabira sa ENTER-om vraća nam u varijablu _id_konto vrijednost polja "ID" tabele konto.
3) Linkanje sa tabelom sa ispisom vrijednosti polja "NAZ"¶
Da bi na uslovima izvještaja odabrali konto i nakon odabira upisali njegov naziv pored GET polja koristimo ovakvu sintaksu
@ 20, 20 SAY "Odaberi konto:" GET _id_konto VALID p_konto( @_id_konto, 20, 2 )
dakle, sada koristimo i dx i dy varijable u p_konto() funkciji
Kako odrediti dimenzije tabele šifrarnika ?¶
One se određuju u samoj funkciji npr, p_konto() kod poziva funkcije postojisif()
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
mrtav kod treba brisati a ne komentarisati. zato imamo source code management !¶
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
hash umjesto gomile parametara¶
neka_funkcija(p1, p2, p3, p4, p5)
zar nije ljepše neka_funkcija(params)
gdje je params hash matrica
poziv je jednostavan
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Odgovorna osoba promijenjeno iz Ernad Husremović u Saša Vranić
Izmjenjeno od Ernad Husremović prije oko 13 godina
/* * This file is part of the bring.out knowhow ERP, a free and open source * Enterprise Resource Planning software suite, * Copyright (c) 1994-2011 by bring.out doo Sarajevo. * It is licensed to you under the Common Public Attribution License * version 1.0, the full text of which (including FMK specific Exhibits) * is available in the file LICENSE_CPAL_bring.out_knowhow.md located at the * root directory of this source code archive. * By using this software, you agree to be bound by its terms. */
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Status promijenjeno iz Dodijeljeno u Čeka se feedback
- % završeno promijenjeno iz 0 u 90
Izmjenjeno od Ernad Husremović prije oko 13 godina
vsasa ove materijale pažljivo proći. Ako ima nejasnoća pitaj.
Sve dok ove prakse ne postanu dio developerske rutine, obavezno se vraćati na njih.
Neka te u tome ne sprječava utisak da te to usporava. Bolje da te usporava čitanje nego da usporavaš i mene i sebe sa mojim ukazima da pratiš ove procedure.
Izmjenjeno od Ernad Husremović prije oko 13 godina
Test case-ovi retroaktivno¶
u slučaju svakog ozbiljnijeg upgrade-a ili debug-a core (common) funkcija procedura je da se uspostavi baterija testcase-a ako je ranije nije bilo.
Izmjenjeno od Ernad Husremović prije oko 13 godina
naravno ima smisla proceduru uspostave test case-ova raditi i na aplikacijskim funkcijama. ali u ovom slučaju su test caseovi nad core funkcijama obavezni
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Status promijenjeno iz Čeka se feedback u Zatvoreno
- % završeno promijenjeno iz 90 u 100
valjda je pročitano.
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Odgovorna osoba promijenjeno iz Saša Vranić u Ernad Husremović