» »

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

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

blay44 ::

:)Lepa SloKin! Sam dodatnih klicev sem se hotel rešiti(sizeof).
Smo se trucali glede procesorskih ciklov.(odgovor BigWhaleju)
OK_. Zakaj pa ne Slovenščina?

FTad ::

techfreak :) je izjavil:

Jaz bi nekaj taksnega naredil (sicer nisem ravno domac v Cju):
void izpis_delam()
{
static char besedilo[25];
static unsigned int stevec = 0;

if(stevec < 25)
{
besedilo[stevec] = '.';
stevec++;
besedilo[stevec] = '\0';
}
else
{
for(unsigned int i = stevec; i > 0; i--, stevec--)
{
besedilo[stevec] = ' ';
}
}

printf("Delam..%s\r", besedilo);
}
  • imena funkcij/spremenljivk v Cju bi naj bila z malo in locena s podcrtajem
  • imena naj bodo cimkrajsa, brez da izgubis razumevanje; npr. 'Delam' je popolnoma odvec tukaj
  • za vejicami, enacaji, podpicji, itd. naj bo presledek (razen na koncu vrstice)
  • zavite oklepaje bi priporocal vedno, tudi ce imas samo en stavek (dosti varnostnih napak se je zgodilo, ker ljudje spregledajo, da dodaten stavek (ne) spada pod dolocen blok)
C je sicer en tak jezik, ki ima polno razlicnih stilov pisanja.


Napram originalni kodi, mi je s spremenjenimi imeni spremenljivk veliko bolj clean.

Bi pa vseeno pisal oklepaje za if/else na tak nacin, saj mi deluje koda bolj kompaktna. Z ocmi takoj opazim, da tam vse paše skupaj. Morda je pa to samo moj "perk".

void izpis_delam()
{
    static char besedilo[25];
    static unsigned int stevec = 0;

    if(stevec < 25) {
        besedilo[stevec] = '.';
        stevec++;
        besedilo[stevec] = '\0';
    } else {
        for(unsigned int i = stevec; i > 0; i--, stevec--) {
            besedilo[stevec] = ' '; } 
    }
    
    printf("Delam..%s\r", besedilo);
}



blay44 je izjavil:

Hu techfreak, če gre za ene par funkcij je to točno to.
Ko pa se začne nabirat špeh, pa špeh...Mi pa paše, da točno vem kaj je Izpis_delam, besediloDelam, stevecDelam. Slednja dva so static. Lahk se zaplete. In to fejst.
Danes bi to bilo v strukturi. Al pa kak c++. Sam je počasen.


"Delam" v spremenljivkah je nepotrebnen buzz word, ki nicesar ne doda k boljsemu razumevanju, ker se ze v imenu funkcije vidi, kaj naj bi ta delala. Sploh pa zato, ker je metoda kratka. V tem primeru je iFor povsem odvec in bi bil int i povsem dovolj za for zanko.

Se vedno pa ne razumem, cemu je potreben iFor-- v for zanki.

Zgodovina sprememb…

  • spremenil: FTad ()

blay44 ::

Res je. Sam a se vam ni nikoli zgodilo, da ste kakšno reč redefinirali? V glavi imaš imena, potem pa kar avtomatsko kaj ponoviš.
iFor ni potreben. Razen, če se hočeš znebiti opozoril pri vključeni -pedantic. CB, Gcc
Vredu, i je res bolj splošen.

Zgodovina sprememb…

  • spremenil: blay44 ()

SloKin ::

blay44 je izjavil:

:)Lepa SloKin! Sam dodatnih klicev sem se hotel rešiti(sizeof).
Smo se trucali glede procesorskih ciklov.(odgovor BigWhaleju)
OK_. Zakaj pa ne Slovenščina?

Scompilaj z O3 in poglej kako bo compiler optimiziral sizeof. Po mojem bo naredil bolje kot ti. Dodatno te pa nikoli vec ne skrbi, ce kdo doda kaksno piko.
Slovenscina je problem, ko ekipa postane mednarodna...

FTad ::

blay44 je izjavil:

Res je. Sam a se vam ni nikoli zgodilo, da ste kakšno reč redefinirali? V glavi imaš imena, potem pa kar avtomatsko kaj ponoviš.
iFor ni potreben. Razen, če se hočeš znebiti opozoril pri vključeni -pedantic. CB, Gcc
Vredu, i je res bolj splošen.


Ja za to pa naredis refactoring na koncu, da pocistis take stvari.

blay44 ::

:D Na hitro probal. Majke_mi AI.

darkolord ::

Pa cel ta del:

for(unsigned int i = stevec; i > 0; i--, stevec--) {
            besedilo[stevec] = ' '; } 


lahko nadomestiš z:

besedilo[0] = '\0';

korenje3 ::

kuall je izjavil:

Samo zanima me ali si sploh programer ali ne tako kot korenje3? Ljudje radi solijo pamet o programiranju, ko v življenju še niso nič sprogramirali.
Te teme in nasploh foruma sploh ne jemljem več resno po parih slabih izkušnjah. BigWhalu in kompaniji se zahvali za to. Karkoli bom napisal boste že nakako obrnili v negativno.


Jaz sem že kar nekaj stvari naredil.
Recimo eden večjih zahtevnejših projektov:


Pa tale sicer hobby projekt, ki je bil kompletiran skupaj s tiskanim vezjem:


Pred 12 leti narejen projekt z assemblerjem:


Toliko o tem da veš da nismo zeleni.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

korenje3 ::

Imam še bolj umazane projekte izpred 22 let, ko sem bil še bolj "talentiran" in sem upravljal botnete... sam ni za v javnost :)
Lahko pa povem da sem bil eden prvih, ki je naredil ne-native torrent client v perl programskem jeziku.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Zgodovina sprememb…

  • spremenil: korenje3 ()

Smurf ::

Kul, spremenljivke izgledajo sedaj ok.

Naslednje vprasanje je, zakaj staticne spremenljivke? Sicer manjka celotna koda, ampak sem 99% preprican, da bi input parameter bil bolj primeren.

BigWhale je izjavil:


Uf, a lahko poves v cem je C++ tolk pocasen, da bi bil neprimeren? A mas dejansko kak test narjen, da ves, da bi bil C++ prepocasen?

Tole tudi mene zanima. Delam tudi dosti na podrocju, kjer je treba pisati precej hitrostno optimalno kodo, pa c++ cisto lepo opravi svojo delo.

Edini primer, ko sem uporabil C v zadnjih letih je bil za kernel module na linuksu...

Zgodovina sprememb…

  • spremenil: Smurf ()

BigWhale ::

Smurf je izjavil:

Naslednje vprasanje je, zakaj staticne spremenljivke? Sicer manjka celotna koda, ampak sem 99% preprican, da bi input parameter bil bolj primeren.


Plus, prevajalnik bi lahk stvari boljs optimiziral. V tem primeru je koda mogoce trivialna ampak na splosno so pa take kvazi globalne spremenljivke kr slaba praksa.

SloKin ::

BigWhale je izjavil:

Smurf je izjavil:

Naslednje vprasanje je, zakaj staticne spremenljivke? Sicer manjka celotna koda, ampak sem 99% preprican, da bi input parameter bil bolj primeren.


Plus, prevajalnik bi lahk stvari boljs optimiziral. V tem primeru je koda mogoce trivialna ampak na splosno so pa take kvazi globalne spremenljivke kr slaba praksa.

A tele staticne spremenljivke so globalne?

Smurf ::

SloKin je izjavil:

BigWhale je izjavil:

Smurf je izjavil:

Naslednje vprasanje je, zakaj staticne spremenljivke? Sicer manjka celotna koda, ampak sem 99% preprican, da bi input parameter bil bolj primeren.


Plus, prevajalnik bi lahk stvari boljs optimiziral. V tem primeru je koda mogoce trivialna ampak na splosno so pa take kvazi globalne spremenljivke kr slaba praksa.

A tele staticne spremenljivke so globalne?

Da.

SloKin ::

Smurf je izjavil:

SloKin je izjavil:

BigWhale je izjavil:

Smurf je izjavil:

Naslednje vprasanje je, zakaj staticne spremenljivke? Sicer manjka celotna koda, ampak sem 99% preprican, da bi input parameter bil bolj primeren.


Plus, prevajalnik bi lahk stvari boljs optimiziral. V tem primeru je koda mogoce trivialna ampak na splosno so pa take kvazi globalne spremenljivke kr slaba praksa.

A tele staticne spremenljivke so globalne?

Da.

Stackoverflow pravi drugace: https://stackoverflow.com/a/36447538
Bos pripravil primer s katerim bos ovrgel to trditev prosim?

Smurf ::

Pardon, ce je lokalno definirana je omejena na scope funkcije in je zgolj "persistant variable".

Zgodovina sprememb…

  • spremenil: Smurf ()

FTad ::

Ja ampak, ce potem spremenljivke niso globalno staticne, potem tisti primer funkcije ne dela pravilno, ali ne? Stevec bo potemtakem vedno prisel le do 1, saj je ob vsakem klicu funkcije na novo instanciran. Ali se motim?

void izpis_delam()
{
    static char besedilo[25];
    static unsigned int stevec = 0;

    if(stevec < 25) {
        besedilo[stevec] = '.';
        stevec++;
        besedilo[stevec] = '\0';
    } else {
        for(unsigned int i = stevec; i > 0; i--, stevec--) {
            besedilo[stevec] = ' '; } 
    }
    
    printf("Delam..%s\r", besedilo);
}

Smurf ::

Ja, sej mislim, da je na to BigWhale namignil na zacetku ;).

techfreak :) ::

"static" spremenljivke so globalno definirane, ampak na voljo samo v scope-u funkcije. Funkcija pravilno deluje.

blay44 ::

Itak, za razliko od ostalih predlogov.
Glede C++. Dokler je koda v c stilu in Cjevske knjižnice je vseeno.
Ko pa začneš ovijat....se pa kurijo resursi.
Če je kaj velikega raje napišem v VB, kot lomljenje v c++. Sam to je verjetno posledica neizkušenosti.

Spxy ::

Kaj pa menite o uporabi slovenščine za imena spremenljivk/metod/funkcij itd... ?

Sam uporabljam samo angleške izraze, saj me ta mešanica s slovenščino res moti. Se mi zdi dosti težje preklapljati med eng/slo, kot pa uporabljati samo eng.

BigWhale ::

Samo anglescina. Je pa mal problem pri kaksnih zadevah kjer ne poznas terminologije dovolj dobro.

Matek ::

Spxy je izjavil:

Kaj pa menite o uporabi slovenščine za imena spremenljivk/metod/funkcij itd... ?

Sam uporabljam samo angleške izraze, saj me ta mešanica s slovenščino res moti. Se mi zdi dosti težje preklapljati med eng/slo, kot pa uporabljati samo eng.
+1 na BigWhalea. Tudi pull request reviewje, tickete, besedila commitov in podobne reči iz navade pišem v angleščini, tudi če so vsi vpleteni Slovenci.

Edina situacija, kjer sem v zadnjem letu poimenoval nekaj v slovenščini, je bilo med razlago nekega Advent Of Code primera prijatelju, ki je popoln začetnik in bi bila angleščina samo nepotrebna dodatna prepreka.
Bolje ispasti glup nego iz aviona.

darkolord ::

Po defaultu - če se da - seveda v angleščini.

Ampak če je konsistentno, me ne moti tudi v slo.

Včasih moraš delati s strukturiranimi podatki v slovenščini (npr. baza/api od slo programa za poslovodenje) in takrat je monogokrat lažje uporabljati slo lokalna imena kot vedno znova prevajati.

Zgodovina sprememb…

Randomness ::

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".

darkolord ::

Well, naslov teme je "v kakšnem stilu pišete vašo kodo"

blay44 ::

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".


:D
Jes,jes,jes
Napisal sem, da je najbolj umazana kar sem jih našel v svoji zbirki.
Sam do sedaj še ni druge, ki bi dela po pričakovanju.
Vsak skok, izpis ene pike. Ko doseže definirano število pik, vrsto pobriše in doda+1 piko. Pa prilagojen izpis printf(). Brez "string.h" in system manipulacij. Vsekakor se, najbrž, zaresne kode tko ne piše.

Jaz pa zanalašč forsiram Slovenščino.
Drugo je delo v kakšni ekipi, al pa za tujega naročnika.

Zgodovina sprememb…

  • spremenil: blay44 ()

techfreak :) ::

Sem ze videl forsiranje slovenscine pri psevdokodu. Popolnoma zgreseno, ce mene vprasas.

Mimogrede, jeziki se pisejo z malo zacetnico, ne z veliko kot v anglescini, ce smo ze pri forsiranju.

blay44 ::

Ja, sam mene so učili, da je velika začetnica relativna stvar.
Tukaj je z namenom.

Matek ::

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".
Znalo bi imeti kaj s tem, da je naslov teme V kakšnem stilu pišete vašo kodo? in ne Zakaj tole ne dela? :P.
Bolje ispasti glup nego iz aviona.

kuall ::

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.

Matek je izjavil:

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".
Znalo bi imeti kaj s tem, da je naslov teme V kakšnem stilu pišete vašo kodo? in ne Zakaj tole ne dela? :P.

Ni to problem. Buge v kodi samo z branjem se težko najde. Najde se jih z debuggiranjem in unit testi.
Bi bilo pa veliko lažje, če bi kodo razdelil na bloke, vsak blok pokomentiral, pokomentiral tudi funkcijo in vsak if in else.
Jaz sem funkcijo moral prebrati večkrat, da sem pogruntal, kaj sploh dela (kaj hoče doseč). Pač zguba časa tako branje. Če bi imel komentarje bi bral komentarje in prišparal kar nekaj časa.

Zgodovina sprememb…

  • spremenilo: kuall ()

SloKin ::

Matek je izjavil:

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".
Znalo bi imeti kaj s tem, da je naslov teme V kakšnem stilu pišete vašo kodo? in ne Zakaj tole ne dela? :P.

Uporabi stil, da taksnih napak ne bo. Ce je nisi nasel imas napacen stil. Napaka je trivialna... Mislim, da se eni ne zavedate, kako nacin pisanja vpliva na kolicino nenamernih napak.

kuall ::

Greg91 je izjavil:


Mimogrede, kako napredujejo famozni AI programi?

Odlično (na tvojo žalost), nekaj bo sigurno ratalo iz njih, podlago imam super samo še finiš čaka, to pa ko bo nekaj več časa, zdaj je v službi preveč dela. Če ne prej pa v penziji naredim finiš. Računam na to, da bodo začel masovno prodajat humanoidne robote s človeškimi rokami, da jih bom sprogramiral z mojim AI znanjem, ki se ga je kar nekaj nabralo. Medtem ko sem gledal BTC riti sem tudi razmišljal o AI. Bolj se je splačalo to kot pa buljit debile na faksu.

SloKin ::

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.

Matek je izjavil:

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".
Znalo bi imeti kaj s tem, da je naslov teme V kakšnem stilu pišete vašo kodo? in ne Zakaj tole ne dela? :P.

Ni to problem. Buge v kodi samo z branjem se težko najde. Najde se jih z debuggiranjem in unit testi.
Bi bilo pa veliko lažje, če bi kodo razdelil na bloke, vsak blok pokomentiral, pokomentiral tudi funkcijo in vsak if in else.
Jaz sem funkcijo moral prebrati večkrat, da sem pogruntal, kaj sploh dela (kaj hoče doseč). Pač zguba časa tako branje. Če bi imel komentarje bi bral komentarje in prišparal kar nekaj časa.

Sem ti ze povedal, da se nauci brat kodo in ne komentarjev. Jaz sem jo samo pogledal in odkril bug. Seveda sledi potem potrditev...

darkolord ::

kuall je izjavil:

Buge v kodi samo z branjem se težko najde. Najde se jih z debuggiranjem in unit testi.
Ne, to pa ni res. Z branjem se najde veliko večino težkih bugov, seveda, če bere druga oseba.

Pair programming je recimo izredno efektivna tehnika glede tega.

FTad ::

SloKin 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.

Matek je izjavil:

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".
Znalo bi imeti kaj s tem, da je naslov teme V kakšnem stilu pišete vašo kodo? in ne Zakaj tole ne dela? :P.

Ni to problem. Buge v kodi samo z branjem se težko najde. Najde se jih z debuggiranjem in unit testi.
Bi bilo pa veliko lažje, če bi kodo razdelil na bloke, vsak blok pokomentiral, pokomentiral tudi funkcijo in vsak if in else.
Jaz sem funkcijo moral prebrati večkrat, da sem pogruntal, kaj sploh dela (kaj hoče doseč). Pač zguba časa tako branje. Če bi imel komentarje bi bral komentarje in prišparal kar nekaj časa.

Sem ti ze povedal, da se nauci brat kodo in ne komentarjev. Jaz sem jo samo pogledal in odkril bug. Seveda sledi potem potrditev...


Tukaj se vidi pomanjkanje izkusenj. Komentarji lahko "lažejo". Npr, ti v komentarju zapiseš, kaj naj bi tisti blok kode počel, ampak si naredi napako, pa te komentar lahko zavede. Prav tako, se pogosto zgodi, da nekdo tisti del kode popravi in dela sedaj nekaj cisto drugega, pozabi se pa spremeniti komentar (jaja, itak se bo sedaj nekdo oglasil, da dobri programerji tega ne pozabijo. Je isti bullshit kot ko vozis na cesti in si vedno v vsaki situaciji 100% pozoren na cesto). Bottom line, komentarji lahko zavajajo in se jih naj ne poskužujemo če le ni treba.


Primer smiselnega komentarja:
function addSetEntry(set, value) {     /*    Don't return `set.add` because it's not chainable in IE 11.  */    
  set.add(value);      
  return set;  
}


Primer slabega:
/*  * Replaces with spaces  * the braces in cases  * where braces in places  * cause stasis.**/ 
$str = str_replace(array("\{","\}")," ",$str);


https://www.freecodecamp.org/news/code-...

kuall ::

Znano je dejstvo, da je kodo lažje pisati kot jo brati. Posebej špageti kodo je težko brati, nametano skupaj brez logičnih presledkov. Verjamem, da bi z vajo postal boljši v branju.

Če kodo komentiraš na način, KAJ nek blok dela, ne pa KAKO, potem komentar nikoli ne more postati obsolete.

SloKin ::

kuall je izjavil:

Znano je dejstvo, da je kodo lažje pisati kot jo brati. Posebej špageti kodo je težko brati, nametano skupaj brez logičnih presledkov. Verjamem, da bi z vajo postal boljši v branju.

Če kodo komentiraš na način, KAJ nek blok dela, ne pa KAKO, potem komentar nikoli ne more postati obsolete.

10 vrsticne funkcije, kot senior developer, nisi bil sposoben razvozlat, ker so manjkali komentarji. Razumem, da jo je napisal junior ampak s tvojim hvalisanjem bi od tebe pricakoval vec.

bbbbbb2015 ::

darkolord je izjavil:

Well, naslov teme je "v kakšnem stilu pišete vašo kodo"


Morda še ena stvar, kar so me sicer tukaj "napadli", samo je pomembno in je primarno, da se omeni.

Dogovor okrog kode morajo sprejeti programerji, kar je in kaj ni sprejemljivo. Mi imamo recimo sedaj dolžino vrstice omejeno na 180 znakov, tako smo se zmenili in tako delamo. Zato da smo produktivni in se ne cufamo med sabo.

Seveda bi lahko rekli, da je dolžina vrstice 130 znakov, celo 80, samorealno, mi delamo (sedaj) na hardveru, ki omogoča več. Temu se reče napredek, predvsem, da so 4K veliki ekrani postali cenejši (in lahko imamo tri ekrane - enega 27" 4K in dva 24" HD, postavljena popreko). Prej je bilo to predrago (za tim 16 ljudi).

Matek ::

kuall je izjavil:

Ni to problem. Buge v kodi samo z branjem se težko najde. Najde se jih z debuggiranjem in unit testi.
Debuggiranje tukaj ni zares relevantno - seveda, z debuggiranjem lahko odkriješ buge, ampak šele, ko imaš nek signal, da obstajajo. Ne moreš pa na slepo vzeti načeloma delujoče kode in si reči "grem malo debuggirat".

kuall je izjavil:

Bi bilo pa veliko lažje, če bi kodo razdelil na bloke, vsak blok pokomentiral, pokomentiral tudi funkcijo in vsak if in else.
Jaz sem funkcijo moral prebrati večkrat, da sem pogruntal, kaj sploh dela (kaj hoče doseč). Pač zguba časa tako branje. Če bi imel komentarje bi bral komentarje in prišparal kar nekaj časa.
Obenem pa se ne bi mogel zares zanesti na nič, ker ne veš, ali so komentarji pravilni.

Tu ima darkolord super point - branje kode je odličen način za odkrivanje bugov, v tem je cel point code reviewjev in pair programminga.
Bolje ispasti glup nego iz aviona.

BigWhale ::

kuall je izjavil:

Ni to problem. Buge v kodi samo z branjem se težko najde.


A za code reviews si ze slisal? To je zlo dobra praksa preverjanja kode in iskanja bugov in na tak nacin se resi precej stvari.

kuall je izjavil:


Najde se jih z debuggiranjem in unit testi.


Kako to mislis z debugiranjem? A kr tko mal pozenes debugger in jumpas vrstico po vrstico in gledas kaj se dogaja? Unit testi? Kako hudica z unit testi odkrijes bug, ki se ti pojavi v produkciji po pol leta?

kuall je izjavil:


Bi bilo pa veliko lažje, če bi kodo razdelil na bloke, vsak blok pokomentiral, pokomentiral tudi funkcijo in vsak if in else.
Jaz sem funkcijo moral prebrati večkrat, da sem pogruntal, kaj sploh dela (kaj hoče doseč). Pač zguba časa tako branje. Če bi imel komentarje bi bral komentarje in prišparal kar nekaj časa.


Funkcija je imela kolk? 20 vrstic? Eno zanko in en if stavek? Pa vsega skupaj tri spremenljivke? Edini komentar, ki bi bil tam smiselen je: "I used static variable here, refactor ASAP"

Matek ::

bbbbbb2015 je izjavil:

Mi imamo recimo sedaj dolžino vrstice omejeno na 180 znakov, tako smo se zmenili in tako delamo. Zato da smo produktivni in se ne cufamo med sabo.

Seveda bi lahko rekli, da je dolžina vrstice 130 znakov, celo 80, samorealno, mi delamo (sedaj) na hardveru, ki omogoča več. Temu se reče napredek, predvsem, da so 4K veliki ekrani postali cenejši (in lahko imamo tri ekrane - enega 27" 4K in dva 24" HD, postavljena popreko). Prej je bilo to predrago (za tim 16 ljudi).
Hardverske omejitve so samo en razlog za omejitev dolžine vrstice - drugi je ta, da te krajše vrstice lahko silijo v pisanje bolj pregledne kode. Ravno zaradi tega si dobil kritike - tvoj primer ekstremno dolge vrstice bi ob omejitvi na 80 znakov moral razbiti na nekaj v smislu (improviziram, ker nimam konteksta):

sampleChannel = enabledSamples[sampleNumber].channel[channelNumber];
byteValue = channelRawByteValues[sampleChannel][entryNumber];
temperature = milivoltsToTemp(bytesToMilivolts(byteValue));
cellId = alphabet[alphabetOffset] + (headerOffset + entryNumber).ToString();
ws.Cells[cellId].Value = temperature;

S tem si en ogromen korak razdelil v več manjših, o katerih lahko bralec ločeno razmisli. Obenem si moral poimenovati par novih spremenljivk, kar je mimogrede "dokumentiralo" program.
Bolje ispasti glup nego iz aviona.

Zgodovina sprememb…

  • spremenil: Matek ()

kuall ::

BigWhale je izjavil:

Funkcija je imela kolk? 20 vrstic? Eno zanko in en if stavek? Pa vsega skupaj tri spremenljivke? Edini komentar, ki bi bil tam smiselen je: "I used static variable here, refactor ASAP"

Zdej že trdiš, da je komentiranje slaba praksa. Zaplezal si se. :)
Ostalo ne bom komentiral, ker so podobne neumnosti.

blay44 ::

Ravno danes sem na nanotu spisal še hujšo. Sam ta mi je stisnila nazaj.
Puf, pa je šlo tri urce....

Da ne bom slučajno jaz moral plačati runde.
Bi bil boljši komentar:
//goljufam printf()
//goljufam AI, da me spusti skozi

SloKin ::

BigWhale je izjavil:


Funkcija je imela kolk? 20 vrstic? Eno zanko in en if stavek? Pa vsega skupaj tri spremenljivke? Edini komentar, ki bi bil tam smiselen je: "I used static variable here, refactor ASAP"

Zakaj tocno vas tam tolk moti static? Scope je local. Predivedam, da se to klice kar pogosto. Porabi 25 bytov + 4 byte za int... Skratka nic kaj dosti...

kuall od tebe pa itak cakamo, da nam predstavis kaj konkretnega...

techfreak :) ::

SloKin je izjavil:

Zakaj tocno vas tam tolk moti static? Scope je local.
https://softwareengineering.stackexchan...
https://thevaluable.dev/global-variable...
(prakticno prva zadetka na Googlu, imas pa dosti stvari napisanih na to temo)

V praksi pa se izkaze, da je najvecji problem pri pisanju unit/integration testov, ker si bodo test case-i delili isto globalno stanje.

BigWhale ::

kuall je izjavil:

Zdej že trdiš, da je komentiranje slaba praksa. Zaplezal si se. :)


A to si namerno izmisljujes stvari? Kr tko mal za hec, al kaj?

SloKin je izjavil:

Zakaj tocno vas tam tolk moti static? Scope je local. Predivedam, da se to klice kar pogosto. Porabi 25 bytov + 4 byte za int... Skratka nic kaj dosti...


Zgoraj je bil ze omenjen global state. S to razliko, da je static v bistvu posebne vrste global state. :) Nerodn za testirat, nerodn za debugirat. Stvar se na konc leps nardi kako drugac, plus compiler bo bolj happy, ce mu ni treba pazit tam na en variable, ki je static.

Zgodovina sprememb…

  • spremenil: BigWhale ()

korenje3 ::

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š.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

SloKin ::

Ce bos tole parametriziral bos avtomatsko naredil O(n) funkcijo saj bos moral preverit vsak element arraya. Ok za 25 elementov se naceloma ne sekiramo. Prav tako ne verjamemo, da bo teh klicev veliko. Tam nekje 1 na 2s ali pa kaj takega.
Ne vidim ravno smisla za pisanje tega testa. Samo zato, da recem 100% coverage? 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.

Netrunner ::

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.
Doing nothing is very hard to do... you never know when you're finished.

Matek ::

Ah, #000, to je pa otročje. Oba sloga sta povsem legitimna in debatirat, da je en objektivno boljši je kot debatirat, a je camelCase boljši kot snake_case in dva presledka boljša od štirih. Uporabljaš tisto, kar se preferira v danem jeziku, če pa ni jasne izbire oz. sta obe popularni, pa se odločiš na nivoju organizacije in po možnosti enforcaš z linterjem.
Bolje ispasti glup nego iz aviona.


Vredno ogleda ...

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

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

Oddelek: Novice / Ostala programska oprema
12229135 (23489) BigWhale
»

Unit testing - se poslužujete?

Oddelek: Programiranje
335178 (3328) krneki0001
»

Applov nov programski jezik Swift (strani: 1 2 )

Oddelek: Novice / Apple iPhone/iPad/iPod
7234344 (28905) Kocka
»

Incident Knight Capital in slaba programska oprema, ki poganja svet

Oddelek: Novice / Znanost in tehnologija
4715447 (12354) Poldi112
»

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

Oddelek: Novice / Varnost
5016996 (14763) Spura

Več podobnih tem