» »

V kakšnem stilu pišete vašo kodo?

V kakšnem stilu pišete vašo kodo?

Netrunner ::

Kaj je otročje :) ? Saj nisem mislil kritizirat drugega načina, samo ne razumem zakaj je nekomu to boljše :)

Pa "camelCase" mi je bolj priljubljen kot "snake_case" in za zamik uporabljam tab-e in ne presledke :)

No ja .. vsak ima svoj način, samo tisti oklepaji pri funkcijah me malo nervirajo, ko moram kaj popravljat za nekim ki ima tak način pisanja.
Doing nothing is very hard to do... you never know when you're finished.

techfreak :) ::

C# je recimo tak jezik, kjer se zacetni oklepaj pise v novi vrstici.

Nisem se nikoli obremenjeval. Dokler imas linter, in link check na CIju, mi je dosti vseeno kaj se uporablja. Pomembno je, da ima celoten projekt samo en nacin.

kuall ::

Prvi primer je simetričen. Simetrija je lepa.

Spura ::

hešteg team-kebab-case

WizzardOfOZ ::

Netrunner je izjavil:

Ne razumem zakaj nekateri pri funkcijah in metodah odprti oklepaj naredite v novi vrstici v stilu:

function test()
{
...
}

namesto

function test() {
...
}

Jaz uporabljam vedno drugo opcijo ker mi je dosti bolj pregledno in nimam rad nepotrebnih vrstic.


Jaz pa vedno prvo opcijo, ker mi je koda tako bolj pregledna.
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!

kuall ::

korenje3 je izjavil:

kuall je izjavil:

korenje3 je izjavil:

Jaz sem že kar nekaj stvari naredil.

Iz teh videov lahko na hitro opazim 2 stvari:
Uporabil si shitty background muzko, namesto da bi govoril. Sovražim take videe.
Imaš špageti kodo. Funkcije dolge po 100 in več vrstic, nobenih presledkov med bloki, kaj šele komentarjev blokov. Nočna mora. Zato si bil triggered ob mojih nasvetih.


Po moje še sam sebi ne verjameš kaj pišeš.


Screenshot tvoje kode. Funkcija s 100 vrsticami, vse nametano skupaj. Ni nič narobe, da je funkcija dolga 100 vrstic. No če rata kaj dost bolj dolga kot 100 vrstic jaz naredim kar razred iz funkcije, pač kjer je to možno, v SQLu ravno ni možno in v SQLu ni nič nenevadnega, če imaš zelo dolge procedure. SQL je itak neumen jezik. V C# se pa da lepo zorganizirat. Narobe je, da si vse nametal skupaj. Moral bi jo razdeliti na segmente in vsakemu delu dati naslov/komentar.

Zgodovina sprememb…

  • spremenilo: kuall ()

SloKin ::

kuall je izjavil:

SQL je itak neumen jezik.

Daj nas razsvetli prosim.

korenje3 ::

kuall je izjavil:

korenje3 je izjavil:

kuall je izjavil:

korenje3 je izjavil:

Jaz sem že kar nekaj stvari naredil.

Iz teh videov lahko na hitro opazim 2 stvari:
Uporabil si shitty background muzko, namesto da bi govoril. Sovražim take videe.
Imaš špageti kodo. Funkcije dolge po 100 in več vrstic, nobenih presledkov med bloki, kaj šele komentarjev blokov. Nočna mora. Zato si bil triggered ob mojih nasvetih.


Po moje še sam sebi ne verjameš kaj pišeš.


Screenshot tvoje kode. Funkcija s 100 vrsticami, vse nametano skupaj. Ni nič narobe, da je funkcija dolga 100 vrstic. No če rata kaj dost bolj dolga kot 100 vrstic jaz naredim kar razred iz funkcije, pač kjer je to možno, v SQLu ravno ni možno in v SQLu ni nič nenevadnega, če imaš zelo dolge procedure. SQL je itak neumen jezik. V C# se pa da lepo zorganizirat. Narobe je, da si vse nametal skupaj. Moral bi jo razdeliti na segmente in vsakemu delu dati naslov/komentar.



Če ne vidiš je celotna funkcija konfiguracija oblike grafa s pogojnimi stavki.
V glavnem s tabo se nima smisla ukvarjat, ker verjetno samo iščeš pozornost, sam nimaš pa nič za pokazat.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

blay44 ::

SloKin je izjavil:

A ce kdo doda piko bom sel pisat nove teste? Malo overkill za dokaj nepomembno zadevo. Vseeno mi je ali dobim nazaj 4 pike ali pa 10. Nekdo zgoraj je napisal, da bi izpisal samo Delam... In po pravici povedano mi je to dovolj. Vazno mi je, da izvem, ce se je program obesil.


SloKin ne se razburjat.
Zadevščina je(še) služila za hitro vizualno kontrolo oceno poteka komuniciranja senzorjev/modulov na vodilu. Dali so mi v uporabo en prastari lap(mislim, daje imel še 286cpu in dos) zaradi inštalirani drugih programov. Pa sem se moral znajti z njim. Zdej ko je vse predelan, na novem, itak vse laufa v gui.
Se jo pa da precej lepše napisati.
Ne vem pa zakaj se tako sekirajo za "static". Vsi pa forsirajo razrede, module. Ko vse olupiš ostane samo C.
korenje3 VB je zakon.:)

Ahim ::

korenje3 je izjavil:

Če ne vidiš je celotna funkcija konfiguracija oblike grafa s pogojnimi stavki.
V glavnem s tabo se nima smisla ukvarjat, ker verjetno samo iščeš pozornost, sam nimaš pa nič za pokazat.

Uf, tisto sracje gnezdo elseifov ... a zadeva ne podpira kaksnega switch statementa? :))

korenje3 ::

Običajno uporabi select case... sam ne vem zakaj je to tako.
Tam vidim da sem uporabil tudi dictionary, česar se ponavadi močno izogibam.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

SloKin ::

blay44 je izjavil:

SloKin je izjavil:

A ce kdo doda piko bom sel pisat nove teste? Malo overkill za dokaj nepomembno zadevo. Vseeno mi je ali dobim nazaj 4 pike ali pa 10. Nekdo zgoraj je napisal, da bi izpisal samo Delam... In po pravici povedano mi je to dovolj. Vazno mi je, da izvem, ce se je program obesil.


SloKin ne se razburjat.
Zadevščina je(še) služila za hitro vizualno kontrolo oceno poteka komuniciranja senzorjev/modulov na vodilu. Dali so mi v uporabo en prastari lap(mislim, daje imel še 286cpu in dos) zaradi inštalirani drugih programov. Pa sem se moral znajti z njim. Zdej ko je vse predelan, na novem, itak vse laufa v gui.
Se jo pa da precej lepše napisati.
Ne vem pa zakaj se tako sekirajo za "static". Vsi pa forsirajo razrede, module. Ko vse olupiš ostane samo C.
korenje3 VB je zakon.:)

Ne razburjam se. Zelim samo izvedet zakaj? Se strinjam, da se static uporavlja cim manj. Ampak me zanima za konkreten primer in konretni razlogi.

blay44 ::

To pa.
To je sam, ko imam v zbirki kake "umazane" kratke void void funkcije k jih moraš previdno vključiti. Itak pol headerje urediš, da je pregledno. Nič ne skrivam.:)

kuall ::

korenje3 je izjavil:

V glavnem s tabo se nima smisla ukvarjat

Kaj je zdaj? Bi danes tako kodo razdelil na segmente in dal sementu naslov? Ali še vedno ne?

Isto kot pri BigWhalu ne vem, ali bi tisto svojo funkcijo, ki jo je pravilno razdelil na segmente in dal naslov segmentom danes stlačil skupaj ali kaj je narobe z njo.

Jaz vam govorim, da je Zemlja okrogla in vam dajem dokaze, vi trmasto vztrajate da ni. Vraževerje je huda stvar.

korenje3 ::

Pokaži svoje, da vidimo. Veliko gobcaš, nimaš pa nič za pokazat?
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

kuall ::

Saj sem dal primer v 3. postu te teme, kako pravilno programiram jaz. Drugega ne rabiš razen to, da si sprintaš in nalimaš na steno in vsako jutro in zvečer pogledaš. :)

korenje3 ::

Sej iz tistega sklepam da nisi prišel dlje od programa, ki napiše "hello world!" na zaslon.
In ne vem zakaj bi imel sranje na steni.

Sej pravim, nisi še nič naredil, samo na veliko gobcaš.

Da ne boš mislil da še nisem srečal takega, ki tako dela. Vse v eni subrutini, in potem se z GOTO premika po programu. V glavnem takega nebi nikoli zaposlil, pa če me prosi da mu dam 700EUR plače.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Zgodovina sprememb…

  • spremenil: korenje3 ()

kuall ::

Daj si nalimaj moj nasvet iz prve strani in tvojo kodo skupaj nekam in ju glej dolgo časa. Mogoče ti bo sčasoma kapnilo, kaj ti hočem dopovedat.

Invictus ::

hočeš povedati, da pač nimaš pojma...

Saj to že vemo...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

korenje3 ::

kuall je izjavil:

Če bi prišlo do dupliciranja kode narediš nujno novo metodo.
Ni za pretiravat v nobeno smer. Naj bodo metode normalno velike, ne prevelike in ne premajhne.
Ravno za vzdrževat je taka koda razdeljena na bloke veliko lažja.


... kaj berem. lol ker "programer"

Veš kako se pri meni ponavadi začne program?
Recimo excel VBA takole:

Public Sub InitializeQueries(Optional wbook As Workbook)
    If Not wbook Is Nothing Then
        Set AWB = wbook
    Else
        Set AWB = ActiveWorkbook
        If AWB Is Nothing Then
            On Error Resume Next
            ThisWorkbook.Activate
            On Error GoTo 0
            Set AWB = ActiveWorkbook
        End If
    End If
    If AWB Is Nothing Then
        MsgBox "Error: Can't set ActiveWorkbook variable (Workbook not active while loading program). Select workbook and press Ctrl+R and restart Startup procedure."
        Exit Sub
    End If
    Dim ufal As Boolean: If Application.ScreenUpdating = True Then ufal = True
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Dim swnn As collection

    ' remove names with broken references
    Call opt.RidOfNames

    ' put settings into memory
    Call SettingsForm.Btn_renew_Click

    ' startup copy tables/ranges
    Call StartUpCopyRun

    ' add floating tables into memory (start with name that already exists in memory)
    Call ListFloatingTables(Resequence:=True)

    ' update all tables
    Call UpdateAllTables(UseLast:=True)

    ' Remove non-existing tables from the list
    Call DelistNonExistingTables

    ' remove dangling shapes
    Call RemoveDanglingShapes

    If ufal = True Then
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
    End If
End Sub
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Zgodovina sprememb…

  • spremenil: korenje3 ()

kuall ::

Če nisi sposoben razumet najbolj enostavnega primera s tistim tvojim screenshotom ne morem pričakovat, da boš zmožen razumet kaj drugega.

Invictus: ko zmagam se zatečete k številkam in branite en drugega. To je tudi tipično za slo tech. Pol že ne vemo kaj je sploh originalna debata, gre se samo še za številke koliko jih je na eni in na drugi strani. Precej podla taktika. Napsy se je je tudi poslužil, ko je začel braniti BigWhala. Naj se človek sam brani, da bo pošten boj 1 na 1, ne pa da je trop proti enemu.

korenje3 ::

Za razliko od tebe, tam kjer jaz kličem:
Call RemoveDanglingShapes
lahko uporabim subrotino v kateremkoli programu. V bistvu mi lahko 3. oseba napiše to subrutino, ki jo vstavim v class v programu. Gre se tudi za portabilnost programa. Sam ne razumeš. Ker nisi še nič naredil razen "hello world!".

In ja tudi v tistem screenshotu lahko uporabim funkcijo za konfiguriranje grafa kjerkoli. Zato ker funkcija sprejema parametre. Ta tvoj "enometodni" način pa ne.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Zgodovina sprememb…

  • spremenil: korenje3 ()

kuall ::

ok :))
dobesedno se režim zdejle.
saj ne vem ali bi se jokal ali režal no, se vseeno režim.

korenje3 ::

Me zanima za katerega delodajalca delaš. Oz. kaj sploh delaš. Programer že nisi.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

kuall ::

Nič ne delam. Jaz sem filozof, ne programer. Ti si pa direktor z mercedezem. :)

korenje3 ::

Kako ne, pa si se v eni drugi temi hvalil da imaš "nadpovprečno programsko plačo".
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

kuall ::

To je anonimni forum in naj tako tudi ostane. Nočem, da se kakšni čudni patroni klatijo okrog mene v resničnem življenju.

korenje3 ::

Kuall:
x.10.2020 "programiram za slovenske firme".
3.10.2020 si bil "šef programerjev".
14.9.2020 "Meni je bil ta forum odskočna deska za fajn programersko kariero".
6.9.2020 si ratal "poslovni partner"
6.9.2020 dajaš delo drugim programerjem
31.8.2020 "čeprav v Javi nisem še nikoli programiral. Mau bom več gledal stackoverflow pa bo."
9.8.2020 spet hvaličenje, da imaš službo in da si "zavrnil programersko službo"

joj jojo. vsakih 5 postov: "jaz sem vrhunski programer", "programiram", "imam ful dela s programiranjem", "drugi mi nudijo zaposlitev, mi ni treba iskat službe" ...

Tip a ti živiš dvojno življenje? Delavec v neki proizvodnji, na forumu pa "vrhunski programer". Toliko samohvaličenja še nisem videl na tem forumu.
Pa brskam po zgodovini pa ne najdem niti ene programske rešitve, ki bi jo podal ali vsaj en blok kode.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

kuall ::

Offtopic si. Tema nisem jaz ampak stil programiranja.

korenje3 ::

23.2.2014: "brez stackoverflow in googla si jaz ne znam predstavljat programiranja, kaj boš imel vse v glavi?"
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

techfreak :) ::

Ce smo iskreni, je ta tema ze od zacetka kuall vs the world. Vmes je bila parkrat iztirjena na dejanski pogovor o stilu, ampak je kuall poskrbel, da se je vrnila na prave tire.

Zgodovina sprememb…

kuall ::

Nisem jaz offtopic, korenje je. Briši ga.

blay44 ::

Škoda teme za kreg.
Men se zdi, da je tukaj Senior samo SloKin.
Namreč takoj je našel bugec.
Ostali pa se učimo.

Spura ::

Jst ne komentiram kode v funkcijah, razen ce je res nekaj posebnega. Vsaka funkcija je ima svoj 'doc' kjer je opisano kaj pocne, in kaj so argumenti itd, vcasih niti tega ne, ce je iz imena funkcije in argumentov jasno kaj je. Tipicno funkcija ni tok dolga da bi poleg tega 'doc' stringa rabila dodatne komentarje. Poleg tega funkcije, k so high-level in povezujejo vec drugih kompleksnih funkcij v vec korakov, tipicno imajo veliko stevilo logger stavkov zaradi monitoringa ipd. Ti log stavki opisujejo kaj se dogaja v nekem smislu in so uporabni kot dodaten vir informacij o tem kaj funkcija pocne. Ponavadi je to zadostno.

Strinjam se tudi s tem, da ce je implementacija preprosta, je brezveze jo opisovat v kodi in je dovolj napisat na funkcijo kaj pocne iz stalisca klicatelja. Rado se dogaja, da dokumentacija ne sledi spremembam v kodi.

Smurf ::

Randomness je izjavil:

Zanimivo, kako se programerji večinoma zapičijo v kozmetiko. Če se ne motim, je samo eden opazil, da je v originalni funkciji IzpisDelam napaka in samo slučajno deluje "pravilno".

Cisto clovesko. Zato pa se pogosto coding style enforca ze v samih merge requestih.

PrimoZ_ ::

Tale tema je super.
Prebereš Kuall poste in maš odlične primere česa ne počet.

Kar tako naprej :)

youPlonker ::

Ta tema je super.

Da bi dal programerjem za vozit smetarja, bi se pri prvi kanti prepirali cel delovnik o tem, kakšen je pravilen sistem pobiranja smeti.

codeMonkey ::

youPlonker je izjavil:

Ta tema je super.

Da bi dal programerjem za vozit smetarja, bi se pri prvi kanti prepirali cel delovnik o tem, kakšen je pravilen sistem pobiranja smeti.


No, ustavilo bi se pred prvo kanto: Travelling salesman problem @ Wikipedia

PrimoZ_ ::

codeMonkey je izjavil:

youPlonker je izjavil:

Ta tema je super.

Da bi dal programerjem za vozit smetarja, bi se pri prvi kanti prepirali cel delovnik o tem, kakšen je pravilen sistem pobiranja smeti.


No, ustavilo bi se pred prvo kanto: Travelling salesman problem @ Wikipedia


Z izjemo Kualla. On ne verjame v faks, ker tam učijo samo brezvezno teorijo in matematiko.
On se samo usede dol in piše kodo. Pa ne rabi unit testov, ker malo premisli in napiše tako dobro kodo :)
Tako enako ne pozna pojma "technical debt", ker kot rečeno malo premisli in napišete kodo, ki ne zastari in je vedno superiona.

korenje3 ::

youPlonker je izjavil:

Ta tema je super.

Da bi dal programerjem za vozit smetarja, bi se pri prvi kanti prepirali cel delovnik o tem, kakšen je pravilen sistem pobiranja smeti.


kuall me spominja na sodelavca.
Sem naredil en program za podjetje. Potem mi pa ta, ki ga uporablja, pametuje kakšne nastavitve so pravilne in kaj kera tipka naredi...
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

blay44 ::

:D
Dej, dej, dej IT "šoferji". Komaj vam, kdaj pa kdaj uspe
"parkirati" brez prask.
Programerji so za vas booosses.
Zdej pa k temi.
A je ta koda iste funkcije bolj pregledna?

void izpis_delam()
{
	static char izpis[25] = { 0 };//univerzalnost
	static unsigned int stevec = 0;

	if (stevec >= sizeof(izpis) - 1)//robustnost, pa še vedno brez knjižnic
		for (unsigned int i = sizeof(izpis) - 1; i>0; i--)//brisanje vrste +pika
                                                                   //brez sizeof(izpis)
			izpis[--stevec] = 32;
	izpis[stevec++] = '.';
	printf("Delam..%s\r", izpis);
}

?

napsy ::

Ne bolj pregledna in nic kaj manj buggy koda.
"If you die, you die. But when you live you live. There is no time to waste."

BigWhale ::

blay44 je izjavil:


//univerzalnost
//robustnost, pa še vedno brez knjižnic


A to so kaksni motivational komentarji? Sej ne prodajas kode na top-shopu, no... :>

strawman ::

Do kakšnega nivoja se greste modularnost in abstrakcijo za namen ponovne uporabe kode na drugih projektih?
Vam v praksi uspe razne pretekle knjižnice v tekoče projekte vključit brez pretiranih forkov?
Koliko dodatnega truda vam je vredno vložit v to?
Je to nekaj kar gradite bolj za osebno rabo, ali je določeno s strani procesa ali podjetja?

Moje izkušnje dobrim nameram navkljub niso preveč dobre.
Redno se poslužujem le par razredov za parsanje domenskih podatkov in knjižnic, namenjenih testiranju na specifični infrastrukturi.

napsy ::

Dostikrat se je zgodilo, da sem kodo razbijal sele kasneje, ko se je dejansko pokazala potreba po tem. Na sreco koda ni dost prepletena in je enostavno naredit nek neodvisen modul za druge projekte.
"If you die, you die. But when you live you live. There is no time to waste."

SloKin ::

blay44 je izjavil:

:D
Dej, dej, dej IT "šoferji". Komaj vam, kdaj pa kdaj uspe
"parkirati" brez prask.
Programerji so za vas booosses.
Zdej pa k temi.
A je ta koda iste funkcije bolj pregledna?


void izpis_delam()
{
static char izpis[25] = { 0 };//univerzalnost
static unsigned int stevec = 0;

if (stevec >= sizeof(izpis) - 1)//robustnost, pa še vedno brez knjižnic
for (unsigned int i = sizeof(izpis) - 1; i>0; i--)//brisanje vrste +pika
//brez sizeof(izpis)
izpis[--stevec] = 32;
izpis[stevec++] = '.';
printf("Delam..%s\r", izpis);
}

?

Meni je tole isto slabo kot prej...
Ne vem zakaj se oklepas te klinceve for zanke. S tem delas delo, ki ga ne rabis delat. Ja ok. Se vedno je verjetno casovna zahtevnost O(1), ker na vsakih n klicev dobis O(n) pa se ti potem zadeve verjetno pokrajsajo (ne vem mogoce sem se zmotil. Se mi ne da vec...). Ampak tukaj se locijo dobri programerji, ki ne flenkedrajo z resursi po nepotrebnem.
Spet si dodal dodatno spremenljivko i, za katero ne vem, ce jo rabis. Ce pa ze... Za izpis sicer ves, da ne bo nikoli dolzine 0 pa potem odstevanje 1 ni problem. Ampak vseeno tam ne bi dal unsigned int. Mislim, da se naredi najprej konverzija iz sizet v int... Sledi odstevanje z -1 in potem nazaj konverzija v unsigned int. Preveri... i-- je pocasnejse od --i, ceprav zna bit, da ze compiler to zamenja...
Zakaj nastavis array na 0 potem pa uporabljas space? Vstavljanje stringa ti bo iteriralo cez array dokler ne bo prisel do 0. A je to potrebno?
Prav tako me moti space zato, ker moram it pogledat v ascii tabelo kaj je 32. Fuck you za porabo mojega casa. A ne znas napisat ' ' ali karkoli ze?

Ce ze zelis eksperimentirat potem vzemi mojo kodo in jo spremeni tako, da uporabis pointer, ki kaze na trenutno \0 v tvojem arrayu. Poglej koliko porabis spomina v enem in drugem primeru? Kaj ce bi vzel unsigned char namesto int? Mogoce char? Kolk bi porabil takrat spomina? Kaj se zgodi v tem primeru z if stavkom? A pride do kaksne konverzije zaradi tipov mogoce? V katero smer gre konverzija?

Kar se tice --i: https://stackoverflow.com/a/24904

Zgodovina sprememb…

  • spremenilo: SloKin ()

napsy ::

Nima smisla delat optimizacije, ce je jasno da niti samega jezika ne pozna (--i vs. i--, static vs. non-static qualifier, ...).
"If you die, you die. But when you live you live. There is no time to waste."

blay44 ::

Čak..čak..čak...nisem vedel, da lahko vpliva na cevovode.
Moram to naštudirat. Zdele sem na VB. Moram do konca tedna dokončat. Tole se pritisnil gor za hec. Da podražim adruinčkarje in pitončkarje.

Randomness ::

Moj predlog (imena sem namenoma pustil v slovenščini):
void izpis_delam(void) {
    static char izpis[25];
    static unsigned int stevec;
    const unsigned int len = sizeof(izpis) - 1;

    if (stevec == len) {
        memset(izpis, ' ', len);
        stevec = 0;
    }

    izpis[stevec++] = '.';

    printf("Delam..%s\r", izpis);
}

Par komentarjev:
- Jasno je, da funkcija na pravilnost delovanja programa nima oz. ne sme imeti vpliva. To pomeni, da se lahko prevaja le v debug buildu.
- Logično je, da funkcija ni klicana na hot-pathu. Posledično je nima smisla optimizirati. Podobno tudi o (algoritemski) časovni zahtevnosti nima smisla razmišljati.
- Ozko grlo bo v vsakem primeru IO klic, razen če stvar ne poženeš na kakem res počasnem procesorju.
- Med i++/++i (--i/i--) v C-ju (v perf smislu) ni nobene razlike.

SloKin ::

Randomness je izjavil:

Moj predlog (imena sem namenoma pustil v slovenščini):
void izpis_delam(void) {
static char izpis[25];
static unsigned int stevec;
const unsigned int len = sizeof(izpis) - 1;

if (stevec == len) {
memset(izpis, ' ', len);
stevec = 0;
}

izpis[stevec++] = '.';

printf("Delam..%s\r", izpis);
}

Par komentarjev:
- Jasno je, da funkcija na pravilnost delovanja programa nima oz. ne sme imeti vpliva. To pomeni, da se lahko prevaja le v debug buildu.
- Logično je, da funkcija ni klicana na hot-pathu. Posledično je nima smisla optimizirati. Podobno tudi o (algoritemski) časovni zahtevnosti nima smisla razmišljati.
- Ozko grlo bo v vsakem primeru IO klic, razen če stvar ne poženeš na kakem res počasnem procesorju.
- Med i++/++i (--i/i--) v C-ju (v perf smislu) ni nobene razlike.

Razmisljanje o casovni zahtevnosti je osnova programiranja. O tem mora programer razmisljati celo v spanju. Pa sploh ni vazno kolikokrat se zadeva klice. Ne recem. Lahko sprejme odlocitev in uporabi slabsi algoritem. Ampak to mora vedet. Mora jo znat celo izracunat. Kar je pa v praksi veliiiika neznanka. Iz racunalnika zelis iztisniti cim vec. In tudi debug messagi imajo performance impact...
Res je med i++ in ++i res ni razlike. Sem podal link... Ampak zaradi c++ je dobro, da ti pride to v roko...
Z memset si sicer pohitril zadeve in se losal for zanke. Vendar je to se vedno pocasneje od premikanja \0 v arrayu. Verjetno tudi na racun izpisa na zaslon. Upa kdo preverit?
Nisem preprican drugace, da tvoja koda deluje pravilno. Manjka namrec \0 v zacetnem arrayu. Predpostavil si, da je avtomatska inicializacija. Kolikor mi je znano je notri lahko junk...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Python najbolj vroč programski jezik (strani: 1 2 3 )

Oddelek: Novice / Ostala programska oprema
12229146 (23500) BigWhale
»

Unit testing - se poslužujete?

Oddelek: Programiranje
335182 (3332) krneki0001
»

Applov nov programski jezik Swift (strani: 1 2 )

Oddelek: Novice / Apple iPhone/iPad/iPod
7234352 (28913) Kocka
»

Incident Knight Capital in slaba programska oprema, ki poganja svet

Oddelek: Novice / Znanost in tehnologija
4715448 (12355) Poldi112
»

Odkrit resen hrošč v PHP 5.3.7 (strani: 1 2 )

Oddelek: Novice / Varnost
5016998 (14765) Spura

Več podobnih tem