Online IDE pro Javu s možností debugování

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #105 kdy: 05. 08. 2016, 20:49:17 »
Prosím, prosím, prosím, řekni, že seš vožralej a nevíš, co mluvíš. Mám tě za celkem inteligentního polotrolla, ale jestli tohle myslíš vážně, tak ti to neodpustím. Co nedokáže kombinace sed, awk, grep, cat, head, tail a nástroje vimu, to rozhodně líp nedokáže žádný IDE. Tak to prostě je a jestli tomu nevěříš, tak je to tím, že netušíš, jaký to má možnosti. Doporučuji studium.
To spíš vypadá, že nevíte, co umí IDE nebo alespoň lepší programátorský editor. Jak dokážete pomocí těch vašich nástrojů během pár vteřin   vytvořit předka třídy, přetáhnout do něj vybrané metody a všude, kde to jde, použít místo refaktorované třídy toho předka? Jak třeba v Javě přidáte parametr funkcionálnímu rozhraní? Jak pomocí regulárního výrazu uděláte takovou prkotinu, jako přejmenování jedné metody, pokud máte stejně pojmenovanou metodou v jiných třídách?

Myslíš tohle?

https://github.com/python-rope/rope/blob/master/docs/overview.rst#move-method-refactoring

Dosud jsme se bavili o prostém přejmenování funkce. K tomu stačí jednoduší nástroje.

Použití může být poměrně těžké poznat z malého kontextu - např. v kódu může být getEntity().update() - na první pohled není vidět, z jaké třídy je metoda update(). Navíc se můžete snadno splést a něco opomenout nahradit nebo naopak nahradit něco, co by se nahradit nemělo.

Většinou je snadné zjistit co vrací funkce getEntity. Je to otázka pár vteřin.


javaman (však vy víte)

Re:Online IDE pro Javu s možností debugování
« Odpověď #106 kdy: 05. 08. 2016, 20:54:11 »
Když jsem vám to před tím říkal, tak jste mi nevěřili. Tohle mi přijít na pohovor, tak si fakt myslím, že je to nějaká zadek a hledal bych skrytou kameru :D

Re:Online IDE pro Javu s možností debugování
« Odpověď #107 kdy: 05. 08. 2016, 20:57:33 »
Většinou je snadné zjistit co vrací funkce getEntity. Je to otázka pár vteřin.

A pak dalsich par vterin na neco jineho. A jinych par vterin tam... a z trivilaniho zasahu je prace.

To je vazne tak obtizne v jedenadvacatem stoleti prijmout myslenku, ze by se prace mela nechat strojum? Zejmena, pokud ji zvladnou spolehliveji, rychleji a bez zbytecnych kecu?

gamer

Re:Online IDE pro Javu s možností debugování
« Odpověď #108 kdy: 05. 08. 2016, 20:57:42 »
A jsme zase u toho hloupého přejmenovávání. To si pod pojmem "refactoring" neumíš představit něco jiného?

Vzhledem k tomu, že přejmenování metod dělám minimáně, klidně to udělám ručně přes '*'. Na těch několika řádcích není co řešit a testy to jistí. Ovšem přejmenovávat update() na update2() je opravdu hloupý nápad.

Kromě toho v C++ nedělám, ale nenapadlo by mě dát dva příkazy na jeden řádek. Program indent mi to automaticky rozhodil na dva.

Kite, už se neztrapňuj, radší toho nech. Všichni vědí, že němáš zkušenosti s velkými projekty a tvůj nejoblíbenější design pattern je Cargo cult programming, nicméně nemusíš nás o tom pořád dokola utvrzovat.

Co se týká argumentů tak: regexp selže už jen na hloupé přejmenování metody, na co složitějšího bys ho chtěl ještě použít? update -> update2 byl jen příklad, klidně si pod tím představ update -> kitovo_oblibene_jmeno_pro_metodu. Kolik příkazů je na jednom řádku je naprosto irelevantní, refactoring musí fungovat, i když budu mít 1000 příkazů na jednom řádku.

Radek Miček

Re:Online IDE pro Javu s možností debugování
« Odpověď #109 kdy: 05. 08. 2016, 20:58:57 »
Použití může být poměrně těžké poznat z malého kontextu - např. v kódu může být getEntity().update() - na první pohled není vidět, z jaké třídy je metoda update(). Navíc se můžete snadno splést a něco opomenout nahradit nebo naopak nahradit něco, co by se nahradit nemělo.

Většinou je snadné zjistit co vrací funkce getEntity. Je to otázka pár vteřin.

Pár vteřin je ale docela dost dlouhá doba - kdybyste použil IDE, tak byste za pár vteřin měl přejmenováno.


Re:Online IDE pro Javu s možností debugování
« Odpověď #110 kdy: 05. 08. 2016, 21:00:12 »
A jsme zase u toho hloupého přejmenovávání. To si pod pojmem "refactoring" neumíš představit něco jiného?

Ne, je to proste jenom snadny a jednoduse pochopitelny protipriklad. Ze jsou i slozitejsi neni zas tak prekvapive.

Re:Online IDE pro Javu s možností debugování
« Odpověď #111 kdy: 05. 08. 2016, 21:04:54 »
Takze
- kdo tvrdi, ze to umi regexpy bud lze nebo nezna zaklady teoreticke informatiky a tak se "jenom" plete
- kdo tvrdi, ze mu podobne upravy neprijdou uzitecne... mno rekneme, ze jini lide resi i situace, kdy to uzitecne je. Dost.
- kdo tvrdi, ze "to nestoji za tu namahu" nema nastroje, kde to jde bez namahy.

(btw: ja bych se vubec nezlobil, kdyby existovala dospela sada nastroju, ktera by to zvladala z lajny nebo z vimka... Ale dokud mi je nikdo neda, tak budu dal pouzivat to, co funguje.)

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #112 kdy: 05. 08. 2016, 21:08:49 »
(btw: ja bych se vubec nezlobil, kdyby existovala dospela sada nastroju, ktera by to zvladala z lajny nebo z vimka... Ale dokud mi je nikdo neda, tak budu dal pouzivat to, co funguje.)

Celou dobu tady mluvím o Rope. Pokud vím, dá se to dobře používat i z ipythonu. Ale není důvod. Existují pluginy pro všechny populární editory.

Re:Online IDE pro Javu s možností debugování
« Odpověď #113 kdy: 05. 08. 2016, 21:13:59 »
(btw: ja bych se vubec nezlobil, kdyby existovala dospela sada nastroju, ktera by to zvladala z lajny nebo z vimka... Ale dokud mi je nikdo neda, tak budu dal pouzivat to, co funguje.)

Celou dobu tady mluvím o Rope. Pokud vím, dá se to dobře používat i z ipythonu. Ale není důvod. Existují pluginy pro všechny populární editory.

No vzhledem k tomu, ze jedu i Javu, Scalu a Haskell, tak mi reseni pouze pro Python moc neimponuje (teoreticky bych ho mohl zacit pouzivat na Python, ale kdyz mam PyCharm, ktery se podoba IntelliJ, tak nema smysl pouzivat extra reseni pro jediny jazyk).

javaman (však vy víte)

Re:Online IDE pro Javu s možností debugování
« Odpověď #114 kdy: 05. 08. 2016, 21:18:07 »
Hlavně pochybuju, že to může u Pythonu fungovat. Tam plno věcí mineš. Proto se Python nepoužívá na velké věci.

Re:Online IDE pro Javu s možností debugování
« Odpověď #115 kdy: 05. 08. 2016, 21:20:23 »
Myslíš tohle?

https://github.com/python-rope/rope/blob/master/docs/overview.rst#move-method-refactoring
Ne, myslím tohle:

Kód: [Vybrat]
class Child(object):

    def a_method(self):
        pass

    def b_method(self):
        pass

child1 = Child()
child1.a_method()

child2 = Child()
child2.a_method()
child2.b_method()

Po refaktorování:

Kód: [Vybrat]
class Parent(object):

    def a_method(self):
        pass

class Child(Parent):

    def b_method(self):
        pass

parent1 = Parent()
parent1.a_method()

child2 = Child()
child2.a_method()
child2.b_method()

Dosud jsme se bavili o prostém přejmenování funkce. K tomu stačí jednoduší nástroje.
O pouhém přejmenování se asi baví jenom ti, kteří tvrdí, že si vystačí s regulárními výrazy. A navíc tu pořád nikdo neukázal, jak bude pomocí regulárního výrazu automaticky přejmenovávat metodu, když stejně pojmenovanou metodu bude mít v desítkách dalších tříd.

Většinou je snadné zjistit co vrací funkce getEntity. Je to otázka pár vteřin.
Snadné zjistit? Tím regexpem? Nebo budete třeba stovky výskytů procházet očima? Jaká je v tom výhoda?

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #116 kdy: 05. 08. 2016, 21:28:05 »
No vzhledem k tomu, ze jedu i Javu, Scalu a Haskell, tak mi reseni pouze pro Python moc neimponuje (teoreticky bych ho mohl zacit pouzivat na Python, ale kdyz mam PyCharm, ktery se podoba IntelliJ, tak nema smysl pouzivat extra reseni pro jediny jazyk).

Mám nainstalovány podobné pluginy i pro jiné jazyky, ale moc je nepoužívám.

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #117 kdy: 05. 08. 2016, 21:32:04 »
Většinou je snadné zjistit co vrací funkce getEntity. Je to otázka pár vteřin.
Snadné zjistit? Tím regexpem? Nebo budete třeba stovky výskytů procházet očima? Jaká je v tom výhoda?

Měnit stovky výskytů volání metody jedné třídy v ostatních třídách? To smrdí špatným návrhem aplikace.

Re:Online IDE pro Javu s možností debugování
« Odpověď #118 kdy: 05. 08. 2016, 21:37:00 »
Měnit stovky výskytů volání metody jedné třídy v ostatních třídách? To smrdí špatným návrhem aplikace.

No jasne. A spatne navrhovane aplikace refaktorovat nebudeme...

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #119 kdy: 05. 08. 2016, 21:51:04 »
Měnit stovky výskytů volání metody jedné třídy v ostatních třídách? To smrdí špatným návrhem aplikace.

No jasne. A spatne navrhovane aplikace refaktorovat nebudeme...

Na takové aplikaci bude nutné udělat takovou spoustu jiných změn, že nějaké přejmenování metody bude jen prkotinou a nejspíš taková metoda přitom zcela zanikne.