Dvě podmínky ve while

k

Re:Dve podminky ve while
« Odpověď #60 kdy: 01. 09. 2015, 00:32:13 »

Názory Vašeho osazenstva totálně vyhořivšího již při prvním kontaktu s reálným kódem jsou tímto trapné.


Prezentace ani práce nebyla požadována, pouze odpověď proč má být limit 20 řádek na metodu.

Nejlepší vysvětlení byl zatím ten kargo kult s VT100. Poznamenám si to, bude se to hodit jako historka.


Kit

Re:Dve podminky ve while
« Odpověď #61 kdy: 01. 09. 2015, 01:15:41 »
Názory Vašeho osazenstva totálně vyhořivšího již při prvním kontaktu s reálným kódem jsou tímto trapné.
Prezentace ani práce nebyla požadována, pouze odpověď proč má být limit 20 řádek na metodu.

Tak chtěl jsi ten kód nebo nechtěl? Zkus si to v hlavě sjednotit, protože tyto dvě věty si odporují.

Citace
Nejlepší vysvětlení byl zatím ten kargo kult s VT100. Poznamenám si to, bude se to hodit jako historka.

Děláš, jako kdybys VT100 nebo jiný terminál nepoužíval. Souvislost s kargo kultem mi zcela uniká. Co si pod tímto pojmem vlastně představuješ? Mezi oblíbené kargo kulty můžeš zařadit například frameworky.

gamer

Re:Dve podminky ve while
« Odpověď #62 kdy: 01. 09. 2015, 06:27:34 »
Kód: [Vybrat]
static int passThruProxy(telnet_t *telnet, unsigned char telopt);
    switch ((int)telnet->state) {
        case TELNET_STATE_WILL: return NEGOTIATE_EVENT(telnet, TELNET_EV_WILL, telopt);
        case TELNET_STATE_WONT: return NEGOTIATE_EVENT(telnet, TELNET_EV_WONT, telopt);
        case TELNET_STATE_DO:   return NEGOTIATE_EVENT(telnet, TELNET_EV_DO, telopt);
        case TELNET_STATE_DONT: return NEGOTIATE_EVENT(telnet, TELNET_EV_DONT, telopt);
    }
}

Až na to, že se to vůbec nepřeloží, protože NEGOTIATE_EVENT nic nevrací. Taky jsi porušil single exit svaté přikázání, které najdeš v tvém oblíbeném Clean Code. A to vše jen proto, že vedeš nesmyslnou svatou válku proti break.

Re:Dve podminky ve while
« Odpověď #63 kdy: 01. 09. 2015, 08:14:28 »

Názory Vašeho osazenstva totálně vyhořivšího již při prvním kontaktu s reálným kódem jsou tímto trapné.


My si kvalitu kodu hlidame. Je kvuli tomu min realny?

Ivan Novy

Re:Dvě podmínky ve while
« Odpověď #64 kdy: 01. 09. 2015, 09:50:52 »
Jestli autorovi dotazu nešlo o to, aby se while provedl jen, jsou-li obě proměnné rovné nule,
while a == 0 and b == 0: se neprovede i když a = 0 a b = 1, to by musel podmínku přepsat takto

p1 = a == 0
p2 = b == 0
while p1 and p2:
    pass

nebo

while not (a != 0 or b != 0):
      pass


Jann

Re:Dvě podmínky ve while
« Odpověď #65 kdy: 01. 09. 2015, 11:05:49 »
To je zase debata. Mrkněte se někdy na zdrojáky napsané Thompsonem, Kernighanem, Tannenbaumem, Wirthem nebo Knuthem. Všichni tihle lidi totiž dokázali napsat něco smysluplného a svým způsobem originálního, ale štábní kulturu nebral jako nějaké posvátné dogma ani jeden z nich. Naproti tomu mi rukama probíhají projekty, které jsou vystajlované přímo vzorově, ale jinak si nezaslouží víc, než být spláchnuty do hajzlíku. Protože jsou prostě blbě navržené a žádné formátovací dogma to v životě nespraví.
Jako na VŠ na praktikách. Byl tam takový pečlivý hujer, protokoly vždycky vzorově upravené, všechno krásné, ale bohužel v tom měl samá hausnumera a strávil na tom několikrát víc času než ostatní. On člověk by měl používat rozum spíš než nějaké tupé poučky.

Aneb "je sice agilní, ale přeci jen, je to vůl. Vždyť víš."

Inkvizitor

Re:Dvě podmínky ve while
« Odpověď #66 kdy: 01. 09. 2015, 12:47:06 »
To je zase debata. Mrkněte se někdy na zdrojáky napsané Thompsonem, Kernighanem, Tannenbaumem, Wirthem nebo Knuthem. Všichni tihle lidi totiž dokázali napsat něco smysluplného a svým způsobem originálního, ale štábní kulturu nebral jako nějaké posvátné dogma ani jeden z nich. Naproti tomu mi rukama probíhají projekty, které jsou vystajlované přímo vzorově, ale jinak si nezaslouží víc, než být spláchnuty do hajzlíku. Protože jsou prostě blbě navržené a žádné formátovací dogma to v životě nespraví.
Jako na VŠ na praktikách. Byl tam takový pečlivý hujer, protokoly vždycky vzorově upravené, všechno krásné, ale bohužel v tom měl samá hausnumera a strávil na tom několikrát víc času než ostatní. On člověk by měl používat rozum spíš než nějaké tupé poučky.

Aneb "je sice agilní, ale přeci jen, je to vůl. Vždyť víš."

Docela dost slov na to, že jsi vlastně nic neřekl. Ale zakončil jsi to citátem, takže to asi bude OK.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Dvě podmínky ve while
« Odpověď #67 kdy: 01. 09. 2015, 14:27:11 »
No to je fakt debata... Taky vám k tomu něco povím... pokud si programujete sami, dělejte to tak, jak vám to vyhovuje, jak se vám to dobře čte, a jak vám to z klávesnice leze a hlavně netvrďte, že jste vzor dokonalosti a všichni to musí dělat stejně. Pokud se dotanete k většímu projektu a okusíte týmovou práci, buď rovnou dostanete popis používanýho coding stylu, který buď budete dodržovat, nebo si hledejte jinou práci, protože těžko se zavedenej tým bude učit podle jednoho novýho rejpala. Pokud projekt/tým žádnej ustálenej styl nemá, raději od toho jděte dobrovolně a hned, protože projekt pravděpodobně bude vypadat hůř, než dort od pejska a kočičky a hrozí vám značná psychická újma.
Jinak osobně třeba na počet řádků metody kašlu, protože pokud řeším komplikovanější úkol, kde je na místě ho rozsekat na menší části, raději si části odděluju komentem, protože pokud se vrhnu na přepisování do mnoha krátkých funkcí, mám problém s jejich pojmenováním tak, abych i po čase věděl, co jsem tím chtěl říct. Je to můj styl, není podle mě ani špatnej, ani správnej, mně to vyhovuje a nikomu to nenutím.
Jinak zábavná historka ze života - na SŠ jsme programovali v Turbo packalu, moje programy osahovaly vždy 4 pascalový příkazy, respektive direktivy: "begin, asm, end, end." a jinak bylo vše v ASM. Učitel z toho byl na prášky, na Packalu trval, a zakázal mi ASM v hlavním programu používat, nicméně bylo povoleno používat vlastní i "vypůjčené knihovny". Chudák dostal packalovskej program s jedním includem a posloupností asi 20ti záhadných volání, který nikdy neviděl. Program to byl krásnej a čitelnst pro něj stejně byla nulová :) Knihovna byla samozřejmě plná ASM, bez jediné nativní packalí funkce.

Kit

Re:Dve podminky ve while
« Odpověď #68 kdy: 01. 09. 2015, 14:42:07 »
Až na to, že se to vůbec nepřeloží, protože NEGOTIATE_EVENT nic nevrací. Taky jsi porušil single exit svaté přikázání, které najdeš v tvém oblíbeném Clean Code. A to vše jen proto, že vedeš nesmyslnou svatou válku proti break.

O to přece nešlo, aby se to přeložilo. Stejně tak nešlo o to, že NEGOTIATE_EVENT není funkce, ale makro. Šlo o princip. Nechtělo se mi hledat vhodnou návratovou hodnotu, ale jsem si jist, že tam taková je - nejspíš objekt ev, který je skryt uvnitř makra ve formě vedlejšího efektu. Je na tom vidět, jak špatné je neuvážené používání maker.

Svaté přikázání Single exit je blbost.
Citace
So if you keep your functions small, then the occasional multiple return , break , or continue statement does no harm and can sometimes even be more expressive than the single-entry, single-exit rule.

To je jediná zmínka o single-exitu, kterou jsem v knize našel. Navíc je v protikladu s tím, co jsi napsal.

Kit

Re:Dvě podmínky ve while
« Odpověď #69 kdy: 01. 09. 2015, 14:51:11 »
... Pokud se dotanete k většímu projektu a okusíte týmovou práci, buď rovnou dostanete popis používanýho coding stylu, který buď budete dodržovat, nebo si hledejte jinou práci, protože těžko se zavedenej tým bude učit podle jednoho novýho rejpala.

Popis coding stylu se z velké části dá uložit do git clean/smudge. Tím se o něj mohu přestat zajímat.

Citace
Jinak osobně třeba na počet řádků metody kašlu, protože pokud řeším komplikovanější úkol, kde je na místě ho rozsekat na menší části, raději si části odděluju komentem, protože pokud se vrhnu na přepisování do mnoha krátkých funkcí, mám problém s jejich pojmenováním tak, abych i po čase věděl, co jsem tím chtěl říct. Je to můj styl, není podle mě ani špatnej, ani správnej, mně to vyhovuje a nikomu to nenutím.

Špagety mám raději v hrnci a pak na talíři. Klidně si tak programuj, u mne bys neuspěl.

Citace
Jinak zábavná historka ze života - na SŠ jsme programovali v Turbo packalu, moje programy osahovaly vždy 4 pascalový příkazy, respektive direktivy: "begin, asm, end, end." a jinak bylo vše v ASM. Učitel z toho byl na prášky, na Packalu trval, a zakázal mi ASM v hlavním programu používat, nicméně bylo povoleno používat vlastní i "vypůjčené knihovny". Chudák dostal packalovskej program s jedním includem a posloupností asi 20ti záhadných volání, který nikdy neviděl. Program to byl krásnej a čitelnst pro něj stejně byla nulová :) Knihovna byla samozřejmě plná ASM, bez jediné nativní packalí funkce.

Použít tohle v zaměstnání, tak je to na vyhazov.

gamer

Re:Dve podminky ve while
« Odpověď #70 kdy: 01. 09. 2015, 14:55:41 »
O to přece nešlo, aby se to přeložilo. Stejně tak nešlo o to, že NEGOTIATE_EVENT není funkce, ale makro. Šlo o princip. Nechtělo se mi hledat vhodnou návratovou hodnotu, ale jsem si jist, že tam taková je - nejspíš objekt ev, který je skryt uvnitř makra ve formě vedlejšího efektu. Je na tom vidět, jak špatné je neuvážené používání maker.

Z kódu který funguje, jsi udělal kód, který ani nejde přeložit a navíc je logicky špatně, vrací se tam hodnota něčeho, co vůbec žádnou návratovou hodnotu nemá. Jen proto, že z nějakého pochybného důvodu nemáš rád break, tak tam místo něho vrazil return, ale úplně blbě.

Kit

Re:Dve podminky ve while
« Odpověď #71 kdy: 01. 09. 2015, 15:22:20 »
O to přece nešlo, aby se to přeložilo. Stejně tak nešlo o to, že NEGOTIATE_EVENT není funkce, ale makro. Šlo o princip. Nechtělo se mi hledat vhodnou návratovou hodnotu, ale jsem si jist, že tam taková je - nejspíš objekt ev, který je skryt uvnitř makra ve formě vedlejšího efektu. Je na tom vidět, jak špatné je neuvážené používání maker.

Z kódu který funguje, jsi udělal kód, který ani nejde přeložit a navíc je logicky špatně, vrací se tam hodnota něčeho, co vůbec žádnou návratovou hodnotu nemá. Jen proto, že z nějakého pochybného důvodu nemáš rád break, tak tam místo něho vrazil return, ale úplně blbě.

To jsi už psal, jen trochu v jiné podobě. A máš i nějaký závěr?

Můj závěr je jasný: Neuvážené použití použití maker udělá z programu noční můru, protože ho znečitelní. Proto také v moderních jazycích makra nejsou. Předělávat po někom takový program je nevděčnou činností, protože vždy se najde nějaký rejpal, kterému se líbí ta původní verze a kterému se nelze zavděčit.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Dvě podmínky ve while
« Odpověď #72 kdy: 01. 09. 2015, 15:28:27 »
Popis coding stylu se z velké části dá uložit do git clean/smudge. Tím se o něj mohu přestat zajímat.
Pořád ti zůstane nějaká část, o kterou se zajímat musíš a kterou zatím automaticky prostě neupravíš.

Citace
Špagety mám raději v hrnci a pak na talíři. Klidně si tak programuj, u mne bys neuspěl.
To je to, o čem mluvím. Co jednomu vyhovuje, druhýmu vadí. Až budu chtít u někoho uspět, budu muset dodržovat jeho pravidla. Žádný můj kód jsi neviděl, kecy o špagetách si můžeš odpustit, taky bezdůvodně netvrdím, že děláš sra*ky jenom proto, že mám blbou náladu. Pro mě osobně je na prvním místě funkčnost a optimalizace, vzhled a přehlednost kódu se tomu občas musí přizpůsobit a v takovým případě to částečně doháním komentama.
Citace
Použít tohle v zaměstnání, tak je to na vyhazov.
Problém byl v tom, že celej slavnej packal jsem uměl 10x líp než dotyčnej učitel a on to věděl. V té době jsem se začal zaměřovat na výkon a assembler byl nejlepší volbou. Konkrétně v té době a v tomto případě by jsi mě asi nevyhodil za to, že nepoužívám tvůj oblíbenej pascal, ale dal by jsi mi 2x tolik práce a 4x tolik peněz, protože programy byly 10x rychlejší i přesto, že jsem se vyžíval v programování grafických fičur, o kterých se standartním packalovským knihovnám ani nezdálo. Nicméně ano, byla to z mé strany mladická nerozvážnost a dost velká a zbytečná provokace.

gamer

Re:Dve podminky ve while
« Odpověď #73 kdy: 01. 09. 2015, 15:33:31 »
To jsi už psal, jen trochu v jiné podobě. A máš i nějaký závěr?

Ano mám závěr. Vrtáš do kódu, který jsi nepochopil, svými změnami jsi ho rozbil a slepě a špatně aplikuješ poučky (žádný break, nemám rád gettery...) vyčtené z nějakých knih. Chybí ti zkušenosti. Celé to obhajuješ nekvalitou původního kódu, který ovšem narozdíl od toho tvého alespoň funguje.

Kit

Re:Dve podminky ve while
« Odpověď #74 kdy: 01. 09. 2015, 15:57:47 »
Ano mám závěr. Vrtáš do kódu, který jsi nepochopil, svými změnami jsi ho rozbil a slepě a špatně aplikuješ poučky (žádný break, nemám rád gettery...) vyčtené z nějakých knih. Chybí ti zkušenosti. Celé to obhajuješ nekvalitou původního kódu, který ovšem narozdíl od toho tvého alespoň funguje.

Hmm. Proč by měl snippet, nad kterým jsem strávil sotva pár minut, fungovat? Abstrakce je přece mnohem důležitější, než konkrétní realizace. Přece jsi nechtěl, abych kompletně refaktoroval celých 1500 řádek kódu? To by byla práce na několik hodin, kterou by nikdo neocenil.