Projekat

Općenito

Profil

Akcije

Podrška #25271

Zatvoren

F18, programmer's tips

Dodano od Ernad Husremović prije oko 13 godina. Izmjenjeno prije skoro 13 godina.

Status:
Zatvoreno
Prioritet:
Odmah riješiti
Odgovorna osoba:
Početak:
16.11.2011
Završetak:
% završeno:

100%

Procjena vremena:

Povezani tiketi 3 (0 otvoreno3 zatvorenih)

korelira sa F18 - Podrška #25109: početo nikad završeno FMK proceduralni => OO source code, šta u F18 ?ZatvorenoSaša Vranić03.11.2011

Akcije
korelira sa vim - Podrška #25348: produktivno korištenje vim-a: nerdtree, vimgrep, Find, MRU, tabsZatvorenoSaša Vranić22.11.2011

Akcije
korelira sa F18 - Podrška #25375: krčenje FMK džungleZatvorenoErnad Husremović23.11.2011

Akcije
Akcije #2

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

Akcije #3

Izmjenjeno od Ernad Husremović prije oko 13 godina

default parametri

kada ne postoji config, init parametri moraju biti logični

npr. database_port = 5432, a ne database_port = 0

Akcije #4

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Naslov promijenjeno iz F18, upute za programera u F18, programer's tips
Akcije #5

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

#25258

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.

Akcije #6

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.

Akcije #7

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

Akcije #8

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.

Akcije #9

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Naslov promijenjeno iz F18, programer's tips u F18, programmer's tips
Akcije #10

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"

Akcije #11

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.

Akcije #12

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.

Akcije #13

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Prioritet promijenjeno iz Normalan u Odmah riješiti
Akcije #14

Izmjenjeno od Ernad Husremović prije oko 13 godina

harbour source code sa string konstantama i našim dikariticima treba biti utf-8

http://redmine.bring.out.ba/issues/25296

Akcije #15

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 := "" 

Akcije #16

Izmjenjeno od Ernad Husremović prije oko 13 godina

poveži se na mjesto gdje smo to odlučili

Akcije #17

Izmjenjeno od Saša Vranić prije oko 13 godina

Kako se koriste tabele p_xyx() (funkcije za otvaranje šifrarnika)

#25312

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()

Akcije #18

Izmjenjeno od Ernad Husremović prije oko 13 godina

Akcije #19

Izmjenjeno od Ernad Husremović prije oko 13 godina

podaci postgresql -> dbf

obavezna konverzija: hb_Utf8ToStr

Akcije #20

Izmjenjeno od Ernad Husremović prije oko 13 godina

borba protiv džungle

#25375

Akcije #22

Izmjenjeno od Ernad Husremović prije oko 13 godina

mrtav kod treba brisati a ne komentarisati. zato imamo source code management !

http://redmine.bring.out.ba/issues/25395#note-7

Akcije #23

Izmjenjeno od Ernad Husremović prije oko 13 godina

getter/setter u harbour-u

harbour/xbase je de-facto moćan jezik

Akcije #24

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

Akcije #25

Izmjenjeno od Ernad Husremović prije oko 13 godina

Svaki artifakt svoj changelog i verzija

#25611

Akcije #26

Izmjenjeno od Ernad Husremović prije oko 13 godina

F18 harbour podrška našim slovima

http://redmine.bring.out.ba/issues/25296#note-30

Akcije #27

Izmjenjeno od Ernad Husremović prije oko 13 godina

dbf only get/update_rec

dbf_get_rec, dbf_update_rec

Akcije #28

Izmjenjeno od Ernad Husremović prije oko 13 godina

f18_menu use case

f18_menu use case

sa f18_menu se rješavamo nepotrebnih privatnih varijabli, kod je "čišći"

Akcije #29

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Odgovorna osoba promijenjeno iz Ernad Husremović u Saša Vranić

header licenca

knowhow ERP header

Akcije #30

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.
 */
Akcije #31

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Status promijenjeno iz Dodijeljeno u Čeka se feedback
  • % završeno promijenjeno iz 0 u 90
Akcije #32

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.

Akcije #33

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.

Akcije #34

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

Akcije #35

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.

Akcije #36

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Odgovorna osoba promijenjeno iz Saša Vranić u Ernad Husremović

dbf upgrade, modstru

#25997

Akcije #37

Izmjenjeno od Ernad Husremović prije skoro 13 godina

F18 karakterna polja - hb_StrToUtf8 nepotrebno. outf.txt treba biti cp852 enkodiran radi PTXT-a

http://redmine.bring.out.ba/issues/25296#note-34

Akcije

Također dostupno kao Atom PDF