Forum » Programiranje » V kakšnem stilu pišete vašo kodo?
V kakšnem stilu pišete vašo kodo?
Randomness ::
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?memset je v resnici boljši od for zanke tudi v performančnem smislu, ampak v tem primeru je pomembnejši zaradi preglednosti kode.
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 prepričan, da veš, kaj je namen funkcije. Lahko pa me prepričaš v nasprotno, če pokažeš svojo delujočo verzijo.
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...Žal očitno ne poznaš C-ja dovolj dobro, da bi vedel, zakaj je moja koda pravilna. Ne zamerim, ne pričakujem, da bi to moral vsak vedeti. Sploh če C ni eden od tvojih primarnih jezikov.
SloKin ::
Randomness je izjavil:
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?memset je v resnici boljši od for zanke tudi v performančnem smislu, ampak v tem primeru je pomembnejši zaradi preglednosti kode.
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 prepričan, da veš, kaj je namen funkcije. Lahko pa me prepričaš v nasprotno, če pokažeš svojo delujočo verzijo.
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...Žal očitno ne poznaš C-ja dovolj dobro, da bi vedel, zakaj je moja koda pravilna. Ne zamerim, ne pričakujem, da bi to moral vsak vedeti. Sploh če C ni eden od tvojih primarnih jezikov.
A sem kje napisal, da memset ni hitrejsi od for loopa? Sem ti celo povedal, da si zadeve pohitril.
Kar se tice zadnjega dela. Ne bi bilo slabo, ce bi me izobrazil in mi povedal da so staticne variable inicializirane avtomatsko. Hvala. Na svoj special way si mi v bistvu povedal.
Ah ja... Kar pobrskaj za mojo kodo. Pa v tvojem stilu. Zal ocitno ne poznas Cja dovolj, da bi vedel, da memseta sploh ne potrebujes. Ne zamerim, ne pricakujem.... Bla bla bla....
Randomness ::
A sem kje napisal, da memset ni hitrejsi od for loopa? Sem ti celo povedal, da si zadeve pohitril.Sem slučajno trdil, da si napisal, da je memset počasnejši od for loopa? Nisem - preberi še enkrat. Moj komentar je šel bolj v smeri preglednosti kode.
Kar se tice zadnjega dela. Ne bi bilo slabo, ce bi me izobrazil in mi povedal da so staticne variable inicializirane avtomatsko. Hvala. Na svoj special way si mi v bistvu povedal.Bi, če bi vprašal. Še bolje pa je, da si znaš odgovor najti sam.
Ah ja... Kar pobrskaj za mojo kodo. Pa v tvojem stilu. Zal ocitno ne poznas Cja dovolj, da bi vedel, da memseta sploh ne potrebujes. Ne zamerim, ne pricakujem.... Bla bla bla....Sem slučajno trdil, da je memset nujen? Sem pobrskal za tvojo kodo, a žal nisem našel (pravilno) delujoče verzije.
BigWhale ::
Premature optimization is a mother of all fuckups. Kakrsnakoli optimizacija te funkcije je resnicna izguba casa. Moj prvi komentar je bil:
Zdaj, ce so tiste pikice obvezne, ker gre za nek progress indikator, ki ima 25 stepov, potem je tole bistveno bolj primerno:
Glede na to, da se status izpisuje na terminal, je povsem dovolj, da se izpisuje samo 'Delam'. Vidi se, da se nekaj dogaja, tiste pikce pa nimajo nobenega pomena. Ce je potreben progress indikator, ki dejansko prikazuje nekaj, potem pa to rec podas kot parameter funkciji in ne telovadis z nekimi statici.
A na koncu prikazes stvar tko, da uporabis for zanko za izpis pik ali pa memset al pa memcpy al pa karkoli ze, je pa popolnoma vseeno. V tem primeru, da se razume.
IzpisDelam() { printf("Delam...\n"); }
Zdaj, ce so tiste pikice obvezne, ker gre za nek progress indikator, ki ima 25 stepov, potem je tole bistveno bolj primerno:
void izpis_delam(int i) { char izpis[25]; memset(izpis, '.', sizeof(char) * i); printf("Delam..%s\n", izpis); }
Glede na to, da se status izpisuje na terminal, je povsem dovolj, da se izpisuje samo 'Delam'. Vidi se, da se nekaj dogaja, tiste pikce pa nimajo nobenega pomena. Ce je potreben progress indikator, ki dejansko prikazuje nekaj, potem pa to rec podas kot parameter funkciji in ne telovadis z nekimi statici.
A na koncu prikazes stvar tko, da uporabis for zanko za izpis pik ali pa memset al pa memcpy al pa karkoli ze, je pa popolnoma vseeno. V tem primeru, da se razume.
WizzardOfOZ ::
Na kakšen način primerjate "dvojnike"?
Recimo imaš 2 datoteki, v vsaki je po 50 milijonov zapisov (zapisi so recimo preko 5000 znakov in v XML strukturi) in moraš poiskat vrstice, ki se podvojijo (potrojijo, ..., po n-kratijo) in v eni in v drugi datoteki, ter jih moraš izločit v posebno datoteko.
prva datoteka:
aaaa
bbbb
cccc
aaaa
ffff
druga datoteka:
dddd
aaaa
bbbb
eeee
dddd
ostati pa mora iz prve datoteke:
cccc
ffff
iz druge:
dddd
eeee
in potem novo kreirana datoteka:
aaaa 3
bbbb 2
dddd 2
Če je so manjše datoteke, potem jih vržem v array in potem s funkcijami nad arrayem obdelam vse, če so pa prevelik, pa zmanjka rama.
Recimo imaš 2 datoteki, v vsaki je po 50 milijonov zapisov (zapisi so recimo preko 5000 znakov in v XML strukturi) in moraš poiskat vrstice, ki se podvojijo (potrojijo, ..., po n-kratijo) in v eni in v drugi datoteki, ter jih moraš izločit v posebno datoteko.
prva datoteka:
aaaa
bbbb
cccc
aaaa
ffff
druga datoteka:
dddd
aaaa
bbbb
eeee
dddd
ostati pa mora iz prve datoteke:
cccc
ffff
iz druge:
dddd
eeee
in potem novo kreirana datoteka:
aaaa 3
bbbb 2
dddd 2
Če je so manjše datoteke, potem jih vržem v array in potem s funkcijami nad arrayem obdelam vse, če so pa prevelik, pa zmanjka rama.
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
SloKin ::
Randomness je izjavil:
Sem pobrskal za tvojo kodo, a žal nisem našel (pravilno) delujoče verzije.
Sem zelo vesel. Poveš kaj ne deluje pravilno?
Irbis ::
WizzardOfOZ je izjavil:
Na kakšen način primerjate "dvojnike"?
Če ti ni pomemben vrstni red vrstic, je najhitreje tako, da urediš datoteke in potem greš po urejenih datotekah, to je potem čisto preprosto.
Drugače pa pač moraš zgraditi indeksiran slovar na disku, to pa pač vzame nekaj časa. Ali pa kakšno bazo.
Da si pa tudi kaj pomagati, če so npr. vrstice dolge, se splača delati najprej s hashi.
Invictus ::
WizzardOfOZ je izjavil:
Na kakšen način primerjate "dvojnike"?
Vzameš asociativno polje in vržeš noter. Zraven dodaš še števec podvojitev.
Associative array @ Wikipedia
Če zmanjka RAMa, pač razbiješ datoteko na manjše, dokler ne gre v RAM .
Sicer nisem iskal podvojitev, ampak sem uparjal podatke. Nobena baza ni tako hitra kot operacije nad takim poljem. Sem pa to delal v perlu. Ampak jezik nima veze...
Zraven pa še narediš multithreaded skripto, pa je...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
Zgodovina sprememb…
- spremenil: Invictus ()
Irbis ::
Zdaj, ce so tiste pikice obvezne, ker gre za nek progress indikator, ki ima 25 stepov, potem je tole bistveno bolj primerno:
void izpis_delam(int i) {
char izpis[25];
memset(izpis, '.', sizeof(char) * i);
printf("Delam..%s\n", izpis);
}
Ampak tole nimaš zaključenega niza izpis (manjka izpis[i + 1] = 0;).
Druga stvar pa je, da memset za nize ni dober, ker je char načeloma lahko tudi unicode, kar potem pomeni, da ne boš dobil pik, ampak nekaj čisto tretjega.
blay44 ::
Dobra debata.
while, do for so pri o3 isto srranje. Un i pa lepš zgleda.
Še mal me dražta pa bom tole izpisal v assemblerju.
Še ene par takih pa bom prešaltal na veliki C.
Jao tko enostavna stvar, pa rabte knjiznice, pa klice klicov.....
while, do for so pri o3 isto srranje. Un i pa lepš zgleda.
Še mal me dražta pa bom tole izpisal v assemblerju.
Še ene par takih pa bom prešaltal na veliki C.
Jao tko enostavna stvar, pa rabte knjiznice, pa klice klicov.....
PrimoZ_ ::
V C-ju nisem nikoli naredil kaj konkretnega, ampak kaj je narobe z uporabo knjižic ? Sploh če gre za funkcije iz C standardne knjižice.
Nazadnje ko sem še gledal asembler kodo ki jo generira prevajalnik, sicer Delphi/Pascal je le ta hudičevo pameten in že sam naredi ogromno optimizacij.
Pogosto je bil celo toliko pameten da je bila "optimizirana" koda na koncu prevedena v isto stvar, kot tista bolj preprosta/razumljiva.
Premature optimization is root of all evil...
Nazadnje ko sem še gledal asembler kodo ki jo generira prevajalnik, sicer Delphi/Pascal je le ta hudičevo pameten in že sam naredi ogromno optimizacij.
Pogosto je bil celo toliko pameten da je bila "optimizirana" koda na koncu prevedena v isto stvar, kot tista bolj preprosta/razumljiva.
Premature optimization is root of all evil...
blay44 ::
Vse drugo, sam tist je treba ne.
izpis() { static char izpis[3] ={0}; static char stevec = 0; if(stevec>=sizeof(izpis)-1) while(stevec) izpis[--stevec]= ' '; izpis[stevec++]='.'; printf("Delam%s\r",izpis); }
showsover ::
Inv, 👍 'mam sicer več takšnih sinhronizacijskih orodij (delajo zelo ok in uporabno hitro tudi nad več GB podatkov), če kdo rabi, me naj kontaktira (direktno kot png ne morem začenjati zasebnih konverzacij), zakaj bi se sami nekaj utrujali, če lahko dobite izvršilno datoteko praktično takoj za par €, menda pa cenite svoj čas bolj kot zabijat čas na nekih takšnih jajcih. Ne, ne dam niti screenshotov sem na forum :-) Saj res, kako se sploh trži neka takšna takšna effort-saving orodja, a kar navadno spletna trgovina preko paypala, lic. ključ? Zbirko večih ali posamično?
FTad ::
Imam vprašanje, kako se vi lotite clean try-catch implementacij.
Dam en primer (v bolj psevdokodi)
Imam nek class, ki vsebuje eno public metodo process_delivery( ), ki do bi za parameter nek delivery_id in nekaj ostalih import parametrov. Znotraj te metode je nekaj private metod, ki glede, ki še nekaj naredijo glede na delivery_id itd.
moje vprašanje je, če si že v public metodi preveril, ali je delivery_id podan z neko vrednostjo, ali potem tudi še v vsaki privatn metodi še enkrat extra preverite ta delivery_id, ali se nanašate, da je preverjanje le-te na začetku public metode to dovolj?
Dam en primer (v bolj psevdokodi)
Imam nek class, ki vsebuje eno public metodo process_delivery( ), ki do bi za parameter nek delivery_id in nekaj ostalih import parametrov. Znotraj te metode je nekaj private metod, ki glede, ki še nekaj naredijo glede na delivery_id itd.
public method process_delivery(string delivery_id, structure data ) { if delivery_id is initial. raise exception. endif. // neka koda private_method_1(delivery_id). // neka koda private_method_2(delivery_id). }.
moje vprašanje je, če si že v public metodi preveril, ali je delivery_id podan z neko vrednostjo, ali potem tudi še v vsaki privatn metodi še enkrat extra preverite ta delivery_id, ali se nanašate, da je preverjanje le-te na začetku public metode to dovolj?
Zgodovina sprememb…
- spremenil: FTad ()
WizzardOfOZ ::
Če si enkrat že preveril in dobil neko vrednost, zakaj bi se potem še drugje spraševal po isti zadevi?
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
FTad ::
WizzardOfOZ je izjavil:
Če si enkrat že preveril in dobil neko vrednost, zakaj bi se potem še drugje spraševal po isti zadevi?
Tudi sam sem bil takega mnenja. Ko sem o tem debatiral s senior kolegom mi je dejal sledeče:
- če se gremo popolno OO programiranje, bi morale metode biti povsem neodvisne, torej če bi metodo želel uporabiti kje drugje (v tem primeru tisto privatno metodo v eni drugi public metodi), bi moral imeti implementiran error handling (preverim, če so parametri nastavljeni)
- da je potem tak primer v bistvu procedualno programiranje, vendar zavito z OO programiranjem in bi lahko vse skupaj napisal v glavni public metodi
Zato pa sem še tukaj želel vprašati za mnenje. Ker se mi zdi, da je koda vseeno tako bolj berljiva, če sklope, ki tematsko pašejo skupaj, vseeno dam v eno privatno metodo, kot pa da imam eno glavno metodo dolgo 200+ vrstic.
darkolord ::
Ne, saj private metod ne uporabljaš kar na slepo. Če jo uporabiš, moraš pač vedeti, kako.
Po isti logiki bi sicer bi tudi za vsak private field moral imeti še preverjanje, ali je pravilno nastavljen, kar je seveda nonsense.
To, da metodo malo razdeliš, nima nobene veze z distinkcijo med OO in proceduralnim programiranjem. Razen morda po kakšni bibliji za puriste (to so potem takšni, ki za TDD še "if" stavke zawrappajo v interface, da jih lahko pomockajo), ampak to je irelevatno.
Po isti logiki bi sicer bi tudi za vsak private field moral imeti še preverjanje, ali je pravilno nastavljen, kar je seveda nonsense.
To, da metodo malo razdeliš, nima nobene veze z distinkcijo med OO in proceduralnim programiranjem. Razen morda po kakšni bibliji za puriste (to so potem takšni, ki za TDD še "if" stavke zawrappajo v interface, da jih lahko pomockajo), ampak to je irelevatno.
Utk ::
Prav je, da preverjaš stvar tam, kjer je zares rabiš. V tej public je ne.
Narediš pa lahk kar češ.
Narediš pa lahk kar češ.
Randomness ::
Se strinjam z darkolordom. Preverjati želiš na meji med public in private delom kode. Teh preverjanj potem ne ponavljaš več, ker s tem zamegliš zadevo, pa še po nepotrebnem upočasnjuješ stvari. Tam kvečjemu dodaš kake asserte oz. contracte (preconditions, postconditions), če jih jezik podpira, s katerimi poloviš potencialne buge, pa še kodo s tem dobro pokomentiraš.
FTad ::
Ne, saj private metod ne uporabljaš kar na slepo. Če jo uporabiš, moraš pač vedeti, kako.
Po isti logiki bi sicer bi tudi za vsak private field moral imeti še preverjanje, ali je pravilno nastavljen, kar je seveda nonsense.
To, da metodo malo razdeliš, nima nobene veze z distinkcijo med OO in proceduralnim programiranjem. Razen morda po kakšni bibliji za puriste (to so potem takšni, ki za TDD še "if" stavke zawrappajo v interface, da jih lahko pomockajo), ampak to je irelevatno.
Hvala.
Bi pa sedaj malce razširil vprašanje na moj obstoječi primer. Recimo, da sedaj pa na podlagi private_method_1 dobim nazaj en rezultat v spremenljivko result_1. To spremenljivko potem pošljem v private_method_2.
A je lepše/bolje/bolj OOP, če jo preverim tako kot v spodaj navedeni kodi (v if stavku), ali bi raje na začetku znotraj private_method_2 preverili, ali je result_1 podan z neko vrednostjo.
public method process_delivery(string delivery_id, structure data ) { if delivery_id is initial. raise exception. endif. // neka koda result_1 = private_method_1(delivery_id). if result_1 is not initial. private_method_2(delivery_id, result_1). endif. }.
Ali:
public method process_delivery(string delivery_id, structure data ) { if delivery_id is initial. raise exception. endif. // neka koda result_1 = private_method_1(delivery_id). private_method_2(delivery_id, result_1). }. //preverim private_method_2 { if result_1. return. endif. // logika }.
Na videz mi je tale druga opcija bolj všeč vizualno, ker ti if stavek malce popači, pač za moj okus.
Randomness ::
Tukaj nima veze, ali je metoda public ali private. Jaz bi se odločil za prvo varianto - stvar želiš namreč preveriti čimprej, takoj ko imaš dovolj informacije, da to storiš. Predstavljaj si, da bi imel še več gnezdenih klicev funkcij. Bi ti potem klical vse funkcije do zadnje v verigi in šele nato preveril z if, čeprav bi se lahko izognil celotni verigi že takoj na začetku?
FTad ::
Randomness je izjavil:
Tukaj nima veze, ali je metoda public ali private. Jaz bi se odločil za prvo varianto - stvar želiš namreč preveriti čimprej, takoj ko imaš dovolj informacije, da to storiš. Predstavljaj si, da bi imel še več gnezdenih klicev funkcij. Bi ti potem klical vse funkcije do zadnje v verigi in šele nato preveril z if, čeprav bi se lahko izognil celotni verigi že takoj na začetku?
Make sense. Ko sem o tem sprva razmišljal sem si rekel, menda ta klic metode in potem preverjanje parametra ne vzame toliko procesorskega časa. Ampak to je bilo le, ker sem imel eno metodo.
Če bi jih pa imel več in tudi več if-else stavkov, potem je tvoj predlog boljši.
Ok, pa če potem napišem v metodi že ta if stavek, a je smiselno še enkrat potem na začetku private_method_2 preveriti ali je parameter result_1 podan? Torej imam dva preverjanja.
napsy ::
Sam sem za eksplicitno preverjanje error pogojev takoj, ko je to mozno. Ostalim, ki berejo kodo je tako flow dost bolj smiseln.
Ce uporabljas jezik z dost dobrim makro sistemom, bi mogoce lahko kar takole napisal:
Ce uporabljas jezik z dost dobrim makro sistemom, bi mogoce lahko kar takole napisal:
assert(klic1(), => { error handler }) assert(klic2(), => { error handler })
"If you die, you die. But when you live you live. There is no time to waste."
kuall ::
moje vprašanje je, če si že v public metodi preveril, ali je delivery_id podan z neko vrednostjo, ali potem tudi še v vsaki privatn metodi še enkrat extra preverite ta delivery_id, ali se nanašate, da je preverjanje le-te na začetku public metode to dovolj?
Ne podvajaj kode. Če privat metodo večkrat kličeš preverjaj v njej, ker se s tem izogneš podvajanju kode.
Pa ne delaj tega:
try...
catch
msgbox ('napaka')
Prevečkrat videl.
Raje naredi tole:
try...
catch
{
msgbox ('napaka' + exception.message)
sendMail (programmers_email, stacktrace)
}
To rabiš delat zato, ker stranke rade rečejo: NE DELA! Pol pa švicaš.
WizzardOfOZ ::
Namesto samo sendmail, raje dobro dokumentran zapis o napaki zapišeš v log, pa trigger na log datoteko, ko se spremeni velikost, pošlje mail.
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
korenje3 ::
Dober program ima dober error handling. V bistvu 2. nivo kode, ki skrbi za komunikacijo med uporabnikom in vedenjem programa.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
kuall ::
Bolje kot log datoteka je log sql tabela na serverju, če je možno.
Če imaš log datoteko naj bosta dve: 1 samo info, 1 samo napake. Ker drgač je nepregledno.
Če imaš log datoteko naj bosta dve: 1 samo info, 1 samo napake. Ker drgač je nepregledno.
darkolord ::
Bolje kot log datoteka je log sql tabela na serverju, če je možno.Pri bolj resnih zadevah se logira vse, in to na en kup.
Če imaš log datoteko naj bosta dve: 1 samo info, 1 samo napake. Ker drgač je nepregledno.
Log datotek namreč pri takih stvareh itak ne pregleduješ na roke, ampak jih vržeš v centralni sistem za log, kjer lahko potem hitro iščeš in koreliraš zadeve med seboj.
Če pišeš program, ki ti bo poslal mail, ko tvoja mačka gre na wc, je seveda drugače.
Spura ::
Ne, saj private metod ne uporabljaš kar na slepo. Če jo uporabiš, moraš pač vedeti, kako.
Po isti logiki bi sicer bi tudi za vsak private field moral imeti še preverjanje, ali je pravilno nastavljen, kar je seveda nonsense.
To, da metodo malo razdeliš, nima nobene veze z distinkcijo med OO in proceduralnim programiranjem. Razen morda po kakšni bibliji za puriste (to so potem takšni, ki za TDD še "if" stavke zawrappajo v interface, da jih lahko pomockajo), ampak to je irelevatno.
Hvala.
Bi pa sedaj malce razširil vprašanje na moj obstoječi primer. Recimo, da sedaj pa na podlagi private_method_1 dobim nazaj en rezultat v spremenljivko result_1. To spremenljivko potem pošljem v private_method_2.
A je lepše/bolje/bolj OOP, če jo preverim tako kot v spodaj navedeni kodi (v if stavku), ali bi raje na začetku znotraj private_method_2 preverili, ali je result_1 podan z neko vrednostjo.
public method process_delivery(string delivery_id, structure data ) {
if delivery_id is initial.
raise exception.
endif.
// neka koda
result_1 = private_method_1(delivery_id).
if result_1 is not initial.
private_method_2(delivery_id, result_1).
endif.
}.
Ali:
public method process_delivery(string delivery_id, structure data ) {
if delivery_id is initial.
raise exception.
endif.
// neka koda
result_1 = private_method_1(delivery_id).
private_method_2(delivery_id, result_1).
}.
//preverim
private_method_2 {
if result_1.
return.
endif.
// logika
}.
Na videz mi je tale druga opcija bolj všeč vizualno, ker ti if stavek malce popači, pač za moj okus.
Odgovor sledi iz odgovora na vprasanje zakaj je pri result_1 = initial potrebno presociti logiko v private_method_2. To ti pove domenski scope tega ifa, in to ti pove ali if sodi v private_method_2 ali v public method.
Recimo private_method_1 preveri ali je bil delivery na glavno lokacijo opravljen, in to spravi v result_1. private_method_2 recimo preverja ce je bil opravljen na sekundarno lokacijo. V tem primeru naj bo if v public metodi, saj noces da je logika, da je sekundarna lokacija fallback, enkodirana v metodi, ki preverja ce je bil na sekundarno lokacijo opravljen delivery. Ce ima private_method_2 ta ekstra flow control if je zelo verjetno da dela dve stvari. Napisi docstring pa bos videl, da bos verjetno imel opis ki opisuje dve stvari, ki jih pocne funkcija.
Namesto da bi se odlocali po programski logiki se za lokacijo stavkov zgleda odlocate po stilu/osebnih preferencah/nekih jebenih paradigmah (lol @ izjave o OO).
kuall ::
kuall ::
SloKin ::
Bolje kot log datoteka je log sql tabela na serverju, če je možno.
Če imaš log datoteko naj bosta dve: 1 samo info, 1 samo napake. Ker drgač je nepregledno.
No ja... Sql server pa res ni problem postavit. Vzdrzevanje le tega nas tudi nic ne stane. Prav tako ne bomo imeli tezav s prostorom. Ce slucajno baza crkne, pac aplikacija ne bo logirala. Branje logov bomo naredili kar preko aplikacije a ne? Da bodo lahko nepooblascene osebe lazje ugotovile, da imamo kak security issue. Al bomo dostop do baze omogocili kar vsem, ki rabijo pogledat log? Mogoce se bo pa admin zafrkaval z sql stavki, da bo potegnil iz baze to kar ti rabis. Samo zato, ker tebe moti log level.
kuall ::
Nisem mislil, da boš šel postavljat SQL server zarad loga. Mislil sem, da imajo resni (TM darklord) programi ponavadi že povezavo na strežnik. če crkne ta povezava ti bo pač moral user poslat screenshot napake, oziroma je pač enostavna napaka v "ni interneta" ali "ni gesla za sql strežnik".
Invictus ::
Pri bolj resnih zadevah se logira vse, in to na en kup.
Jaz sem pisal za neresne zadeve.
Saj so tukaj vsi tvoji posti neresni, tako da mi to že vemo .
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
SloKin ::
Nisem mislil, da boš šel postavljat SQL server zarad loga. Mislil sem, da imajo resni (TM darklord) programi ponavadi že povezavo na strežnik. če crkne ta povezava ti bo pač moral user poslat screenshot napake, oziroma je pač enostavna napaka v "ni interneta" ali "ni gesla za sql strežnik".
Torej, ce te prav razumem. Ti v produkcijsko bazo pises debug loge?
Invictus ::
Logi na SQL server, če prav razumem? Kateri levak še to dela ?!?!!
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
blay44 ::
Nikjer pa še nisem zasledil uporabe deklaracije
register. Ne vem, zgleda, da se jo seniorji izogibajo.
Recimo za un zgoraj omenjeni primer iskanja ponavljajočih nizov ali pa, ko vam kak ARMjaš kokodaka.
Sicer mal neposrečeno, ampak rečmo na funkciji izpis():
register. Ne vem, zgleda, da se jo seniorji izogibajo.
Recimo za un zgoraj omenjeni primer iskanja ponavljajočih nizov ali pa, ko vam kak ARMjaš kokodaka.
Sicer mal neposrečeno, ampak rečmo na funkciji izpis():
izpis(char *a,...) { char c = *a; static char izpis[13]; static char stevec = 0; register dolzina=sizeof(izpis)-1; if(stevec>=dolzina) while(stevec) izpis[--stevec]= ' '; izpis[stevec++]= c; printf("Delam%s\r",izpis); }
Randomness ::
@blay44: A ti to malo provociraš? register keyword se že dolgo ne uporablja več. Razen morda izjemoma, če si vezan na kak prastar obskuren prevajalnik.wiki
misticnimrk ::
Logi na SQL server, če prav razumem? Kateri levak še to dela ?!?!!
Sem mislil, da sem jaz ' ta čuden, ki gleda zdaj debelo '.
Drugače pa, zanimiva tema.
A kdo programira za avto industrijo?
Kuall, vem da ne. Ker drugače bi ga testi kaj bolj zanimali. Pa še za kakšno drugo izjavo bi se prikrajšal.
Me zanima, v kakšnem stilu pišejo kodo JS programerji? (Tega jezika še danes, ne prebavljam in ga v originalni 'obleki' verjetno nikoli ne bom).
illion ::
misticnimrk je izjavil:
Logi na SQL server, če prav razumem? Kateri levak še to dela ?!?!!
...
Me zanima, v kakšnem stilu pišejo kodo JS programerji? (Tega jezika še danes, ne prebavljam in ga v originalni 'obleki' verjetno nikoli ne bom).
Kako "v kaksnem stilu"? Takem kot se ga doloci znotraj team-a/podjetja. Za lint se lahko uporabi eslint, obstajajo kolekcije v naprej definiranih pravil, recimo js standard (nekako podobno gofmt/rustfmt) + na veliko se prehaja na typescript, ki doda nekaj type safety-a zdravn. JS svet terja malo vec discipline, ostalo je enako kot pri drugih jezikih.
misticnimrk ::
misticnimrk je izjavil:
Logi na SQL server, če prav razumem? Kateri levak še to dela ?!?!!
...
Me zanima, v kakšnem stilu pišejo kodo JS programerji? (Tega jezika še danes, ne prebavljam in ga v originalni 'obleki' verjetno nikoli ne bom).
Kako "v kaksnem stilu"? ...
Tako, kot naslov te teme.
Problem(?), ki ga ne prebavim pri JS je predvsem ta, da ni type safe, kot si že sam omenil.
To privede do veliko in velikih težav.
V času, ko se je začelo govorit o jqueryu, je bil JS neberljiv in neukrotljiv živež (vsaj zame, takrat) in sem videl ogromno enih skropucal.
Vidim pa, da se to v zadnjih letih (kar dobro) rešuje.
kuall ::
Tudi v JS se da pisat čisto kodo, če znaš. Večina JS kode je še posebej grda ja. Pač ni treba uporabit vseh neumnih JS principov. Izogibaš se raznoraznih neumnih nejasnih JS trikov, uporabljaš samo jasne principe in si dober.
codeMonkey ::
misticnimrk je izjavil:
A kdo programira za avto industrijo?
Jaz. Ti tudi?
Mi je zanimivo primerjati z debato tukaj. Ker so zahteve ze za "quality managed" aplikacije dalec od tega kar se omenja tukaj. Kje so potem sele safety critical aplikacije po ISO 26262.
Zgodovina sprememb…
- spremenilo: codeMonkey ()
misticnimrk ::
@codeMonkey
Ne & ja.
Ne delam zares kot programer na projektih v avto industriji, ker imamo v ekipi druge ljudi, ki se s tem ukvarjajo.
Ampak poznam situacijo in si ne morem priti gor, kako so izjave nekaterih na forumu diametralne resnici v tej (naši) branži.
@kuall
ja, da se ampak vprašanje je, ali jo. Moje izkušnje (sicer že z dolgo, pa ne še čisto sivo brado), kažejo na to, da je takih, ki pišejo lepo JS kodo malo oz nič.
In ker je jezik tudi znan po tem, da lahko z njim čaraš še tako nelogične zmaske sem ga tudi izpostavil.
Gledam sedaj malo podrobneje TypeScript. Na tole bi se lohk kr hitr navadu..
Ne & ja.
Ne delam zares kot programer na projektih v avto industriji, ker imamo v ekipi druge ljudi, ki se s tem ukvarjajo.
Ampak poznam situacijo in si ne morem priti gor, kako so izjave nekaterih na forumu diametralne resnici v tej (naši) branži.
@kuall
ja, da se ampak vprašanje je, ali jo. Moje izkušnje (sicer že z dolgo, pa ne še čisto sivo brado), kažejo na to, da je takih, ki pišejo lepo JS kodo malo oz nič.
In ker je jezik tudi znan po tem, da lahko z njim čaraš še tako nelogične zmaske sem ga tudi izpostavil.
Gledam sedaj malo podrobneje TypeScript. Na tole bi se lohk kr hitr navadu..
SloKin ::
Narobe razumeš, kot ponavadi. Se mi ne da ukvarjat s teboj, ker si res lesen. :)
Do sedaj v temi nisi sproduciral nic uporabnega. Ko je clovek postal kodo si se potuhnil za nekaj dni. Nekateri se strinjamo, da tvoje znanje sepa. Pravzaprav zaradi tega ne dobis druge sluzbe. Direktnim vprasanjem se izogibas z zaljivkami. Skratka... rekli bi, da si blefer. In sam pravis, da bleferji najedajo.
Mavrik a bo tole v redu, al bos spet brisal?
korenje3 ::
Jap, tudi jaz mislim da je blefer. Nekaj osnov SQLja pozna, to je pa tudi vse.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Python najbolj vroč programski jezik (strani: 1 2 3 )Oddelek: Novice / Ostala programska oprema | 29146 (23500) | BigWhale |
» | Unit testing - se poslužujete?Oddelek: Programiranje | 5182 (3332) | krneki0001 |
» | Applov nov programski jezik Swift (strani: 1 2 )Oddelek: Novice / Apple iPhone/iPad/iPod | 34352 (28913) | Kocka |
» | Incident Knight Capital in slaba programska oprema, ki poganja svetOddelek: Novice / Znanost in tehnologija | 15448 (12355) | Poldi112 |
» | Odkrit resen hrošč v PHP 5.3.7 (strani: 1 2 )Oddelek: Novice / Varnost | 16998 (14765) | Spura |