Refactoring - umíte ho? A jak se ho učíte?

vilonti

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #15 kdy: 27. 12. 2017, 14:28:32 »
Citace: devel
............ a ty odpovědi nezůstanou ani v cachi Googlu nebo WebArchivu.

Proč by neměly zůstat ve WebArchivu, když tam se archivuje celý web? A nejen tam, dokonce i provoz na potřebnou dobu soustavně skladují nejmenované služby nejmenovaných mocností.

Refaktoring je výbornej hlavně na vkládání nejrůznějšího malicious SW, ale to málokdo napíše takhle přímo, protože se všichni bojíme jak po nás jdou BIS a jim podobní. Už s nima máte taky nějaké zkušenosti?


balki

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #16 kdy: 27. 12. 2017, 14:49:35 »
Ahoj,
zvládáte refactoring? Umíte ho? Jak jste se ho naučili? Jaké techniky používáte a jak se v něm zlepšujete? Co vaši kolegové? Ovládají ho?

  • Martin Fowler, Kent Beck: Refaktoring: Zlepšení existujícího kódu
  • Robert C. Martin: Čistý kód

+1

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #17 kdy: 27. 12. 2017, 14:53:08 »
Refaktoring v mém oboru není nic moc.

- Lidi se nechtějí učit nové věci a spoustě programátorů je 40+,
- Razí se heslo, co funguje na to se nesahá,
- Unit testy je pro lidi v mém oboru sprosté slovo,
- OOP, satane odstup!

Já osobně se snažím učit nové věci, ať už v mém oboru, tak si programuji po večerech v jiných programovacích jazycích a to se pak člověk naučí jinak myslet. Bohužel však na refaktoring nechce nikdo moc slyšet, takže když se dostanu ke starýmu kódu, tak se na něj kouknu, jestli by se nedalo něco vylepšit a pokud ano, udělám to v rámci „nového požadavku“, protože to stejně budou muset uživatelé otestovat. Primárně se kouknu co kód dělá (píšu si poznámky do kódu) a pak se kouknu, jestli by to nešlo napsat efektivněji.

jpu

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #18 kdy: 27. 12. 2017, 15:02:45 »
Ja sa snazim kod oddelovat do tried, helper tried, robit metody apod. Vo vela firmach refactoring neexistuje. Nedavno som dostal projekt, kde su asi 4 ci 5 ifov vnorenych a v danom ife je nejaka logika. Detto switch-case. Nie aby to hodili do metody.

Míla Rozner

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #19 kdy: 27. 12. 2017, 15:32:51 »
Citace: devel
............ a ty odpovědi nezůstanou ani v cachi Googlu nebo WebArchivu.
Proč by neměly zůstat ve WebArchivu, když tam se archivuje celý web?

Protože provozovatel toho serveru podmiňuje čtení odpovědí registrací – a Google i WebArchiv tam chodí bez registrace, takže smůla. Veřejná je maximálně jedna odpověď, ale všechny ostatní a komentáře jsou ztracené.

Co se týče tajných služeb – pro ně je ten web asi nezajímavý, takže taky nic – kdyby byl, tak by si tam účet založily a indexovaly to přes něj – ale pochybuji, že by ti pak poskytly data.

Nezabrušuj do takových oblastí, o kterých nic nevíš.


Franta <xkucf03/>

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #20 kdy: 27. 12. 2017, 15:37:23 »
- Unit testy je pro lidi v mém oboru sprosté slovo,

Zrovna s refaktoringem ti jednotkové testy moc nepomohou, protože je musíš taky přepsat a tím ztrácíš jistotu, že program funguje stejně jako dřív – pokud jsi udělal chybu v kódu, pravděpodobně ji uděláš i při přepisování testu, protože vycházíš třeba z nějakých mylných předpokladů, jak se má program chovat a tu chybu zadrátuješ do kódu i do testu.

Pokud chceš refaktorovat trochu víc, než přejmenovávat lokální proměnné uvnitř metod nebo měnit odsazení, tak potřebuješ integrační/systémové testy, které ověří funkčnost celku.

Kit

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #21 kdy: 27. 12. 2017, 15:44:39 »
- Unit testy je pro lidi v mém oboru sprosté slovo,

Zrovna s refaktoringem ti jednotkové testy moc nepomohou, protože je musíš taky přepsat a tím ztrácíš jistotu, že program funguje stejně jako dřív – pokud jsi udělal chybu v kódu, pravděpodobně ji uděláš i při přepisování testu, protože vycházíš třeba z nějakých mylných předpokladů, jak se má program chovat a tu chybu zadrátuješ do kódu i do testu.

Pokud chceš refaktorovat trochu víc, než přejmenovávat lokální proměnné uvnitř metod nebo měnit odsazení, tak potřebuješ integrační/systémové testy, které ověří funkčnost celku.

Během refaktorování se testy nemění. Právě testy by měly zaručovat, že se během refaktorování nezmění funkcionalita.

Jednotkové testy by měly mít vždy přednost před integračními a systémovými. Jsou totiž mnohem levnější.

balki

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #22 kdy: 27. 12. 2017, 15:54:08 »
- Unit testy je pro lidi v mém oboru sprosté slovo,

Zrovna s refaktoringem ti jednotkové testy moc nepomohou, protože je musíš taky přepsat a tím ztrácíš jistotu, že program funguje stejně jako dřív – pokud jsi udělal chybu v kódu, pravděpodobně ji uděláš i při přepisování testu, protože vycházíš třeba z nějakých mylných předpokladů, jak se má program chovat a tu chybu zadrátuješ do kódu i do testu.

Pokud chceš refaktorovat trochu víc, než přejmenovávat lokální proměnné uvnitř metod nebo měnit odsazení, tak potřebuješ integrační/systémové testy, které ověří funkčnost celku.

Unit testy su naviac proceduralne, vhodne na testovanie bezstavovych procedur. (Na OOP nevhodne) Komplexnejsie spravanie sa s tym komplikovane testuje, ze sa na to clovek radsej vykasle. 

Osobne ich pouzivam presne na take procedury, kde viem, ze pre vstup A ma byt vystup B, uz mi to par krat zachranilo zadek.

Kit

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #23 kdy: 27. 12. 2017, 16:00:18 »
Unit testy su naviac proceduralne, vhodne na testovanie bezstavovych procedur. (Na OOP nevhodne) Komplexnejsie spravanie sa s tym komplikovane testuje, ze sa na to clovek radsej vykasle. 

Osobne ich pouzivam presne na take procedury, kde viem, ze pre vstup A ma byt vystup B, uz mi to par krat zachranilo zadek.

Unit testy se samozřejmě s výhodou používají i na OOP, protože se jimi dá testovat i stavové chování objektů. Kdyby se daly testovat jen bezstavové metody, byly by takto omezené testy k ničemu.

Franta <xkucf03/>

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #24 kdy: 27. 12. 2017, 18:39:12 »
Během refaktorování se testy nemění. Právě testy by měly zaručovat, že se během refaktorování nezmění funkcionalita.

Pokud ten refaktoring není vyloženě triviální (přeformátování, přejmenování, změna algoritmu uvnitř jedné metody…) tak to má dopad i na jednotkové testy, které musíš přepsat – změna jde přes víc jednotek. Např. změníš vnitřní uspořádání – některé třídy přepíšeš, některé smažeš, jiné přidáš, upravíš vnitřní rozhraní… – ale navenek se program chová stejně a plní původní požadavky (což ohlídají ty integrační/systémové testy).

Jednotkové testy by měly mít vždy přednost před integračními a systémovými. Jsou totiž mnohem levnější.

Pokud to počítáš na kusy, tak asi ano. Ale co se týče poměru užitku a stráveného času, tak si to nemyslím. V praxi je problém v tom, že na úrovni jednotkových testů většinou nemáš tak dobře zpracované požadavky a specifikace, jako na úrovni vnějšího rozhraní. Takže si tu specifikaci vymýšlí víceméně za chodu programátoři, kteří píší jak kód, tak jednotkové testy – a pokud to vymyslí špatně, udělají chybu v kódu i v testech, všechno jim to svítí hezky zeleně, ale není to nic platné, protože specifikaci/požadavky to nesplňuje a zákazník jim to omlátí o hlavu.

Franta <xkucf03/>

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #25 kdy: 27. 12. 2017, 18:42:44 »
Unit testy su naviac proceduralne, vhodne na testovanie bezstavovych procedur. (Na OOP nevhodne) Komplexnejsie spravanie sa s tym komplikovane testuje, ze sa na to clovek radsej vykasle. 

Osobne ich pouzivam presne na take procedury, kde viem, ze pre vstup A ma byt vystup B, uz mi to par krat zachranilo zadek.

Unit testy se samozřejmě s výhodou používají i na OOP, protože se jimi dá testovat i stavové chování objektů. Kdyby se daly testovat jen bezstavové metody, byly by takto omezené testy k ničemu.

V tomhle souhlasím. Jednotkové testy a OOP k sobě patří a součástí jednotkového testu běžně je uvedení objektu do nějakého požadovaného stavu a následně provolání jeho metod a kontrola vrácených hodnot a výsledného stavu.

Potíž je spíš v tom, přesně vědět, co má být ten požadovaný a cílový stav a jak se mají konkrétní metody chovat. Často to nikde popsané není a lidé to mají jen v hlavě – na rozdíl od požadavků vnějšího rozhraní, které spíš bývají někde napsané a schválené.

greger

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #26 kdy: 27. 12. 2017, 18:43:04 »
Vyborny. Takze k tematu opet nic. Tohle forum je k zbliti.
Na blbou otázku blbá odpověď ... .

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #27 kdy: 27. 12. 2017, 18:56:56 »
Vyborny. Takze k tematu opet nic. Tohle forum je k zbliti. Kam chodi normalni lide, co je bavi vyvoj a chteji se posouvat? Proc v zahranici mohou lide diskutovat a pomahat si a tady musi byt kazdej nejvetsi chytrak, ostatni oslovovat lopaty, fiktivne brat daleko pres kilo a pak mi na pohovoru  na 80% banalnich otazek nedokazat odpovedet a ostatnim zamestnavatelum produkovat kod jako prase bez spetky studu?

To je náhodou dobrá otázka. Také marně hledám fórum pro vývojáře. Znám akorát devel.cz, které je zamčené a nejde tam psát a ani číst a jinak skoro nic. Dnes už fóra moc nefrčí.
Taky nevím co je na tom zamčené... že se musíš přihlásit je plus, aspoň tam netrolí tolik lidí jako tady a pokud ano, tak aspoň na vlastní triko ... ne pod jakousi přezdívkou, kterou každou chvíli někdo mění... viz Javaman.

Míla Rozner

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #28 kdy: 27. 12. 2017, 19:05:40 »
Vyborny. Takze k tematu opet nic. Tohle forum je k zbliti. Kam chodi normalni lide, co je bavi vyvoj a chteji se posouvat? Proc v zahranici mohou lide diskutovat a pomahat si a tady musi byt kazdej nejvetsi chytrak, ostatni oslovovat lopaty, fiktivne brat daleko pres kilo a pak mi na pohovoru  na 80% banalnich otazek nedokazat odpovedet a ostatnim zamestnavatelum produkovat kod jako prase bez spetky studu?

To je náhodou dobrá otázka. Také marně hledám fórum pro vývojáře. Znám akorát devel.cz, které je zamčené a nejde tam psát a ani číst a jinak skoro nic. Dnes už fóra moc nefrčí.
Taky nevím co je na tom zamčené... že se musíš přihlásit je plus, aspoň tam netrolí tolik lidí jako tady a pokud ano, tak aspoň na vlastní triko ... ne pod jakousi přezdívkou, kterou každou chvíli někdo mění... viz Javaman.

Náhodou se tam trolí parádně, dokonce tam i dlouhou dobu vedl žebříček 100% troll a měl(a) nejvíc příspěvků. Jen na to řešení technických problémů to moc není. Jak jsem psal, česká komunita je dost malá (natož když to omezíš ještě registrací) a odpovědi ani nejsou indexované a archivované, takže je z toho zákonitě akorát žvanírna nějaké malé skupinky kamarádů (což nemusí být nutně špatně, ale jinak od toho moc nečekej). To je lepší StackOverflow nebo z českých Ábíčko.

Kit

Re:Refactoring - umíte ho? A jak se ho učíte?
« Odpověď #29 kdy: 27. 12. 2017, 19:10:08 »
Také mi vadí, že i na čtení diskuze na Devel.cz musíš být registrován. Dost to degraduje jeho smysl.