SW pro náhradu kódu

SW pro náhradu kódu
« kdy: 31. 05. 2019, 21:43:06 »
Zdravím,

máme jisté API (třídy, moduly, funkce) a nad tím větší množství kódu. Jednou za období se API změní a potřebuji nějaky sofistikovaný nástroj na hromadnou změnu kódu. Často nejde jen o náhrady klíčových slov, ale třeba sloupce v SQL dotazích, různé vazby v tabulkách apod. Mířím tím tam, že nahradit v texťáku klíčova slova je sice jednoduché, ale někdy nemožné. Existuje nějaký softistikovanější nástroj, nebojím se vyslovit na bázi ML nebo UI ?

Michael.


Re:SW pro náhradu kódu
« Odpověď #1 kdy: 31. 05. 2019, 22:35:14 »
Zmeny API ve vasem pripade mohou byt dvojiho typu:
1. zmena logiky - zde vam sebelepsi nastroj nepomuze. Pokud API dava neco jineho, stejne musite prepracovavat alespon castecne business a DB vrstvu.
2. zmena nazvu - pokud opravdu jde jen o kosmeticke zmeny nazvu metod/promenych na API a Vam to vyvolava chyby v business logice, pak mate spatne navrzenou aplikaci. Musite mit mezivrstvu, ktera dane api abstrahuje. Priklad: Pokud mapuji API nejakou datovou tridou, pak nelze tuto datovou tridu pouzivat v businessu, musite mit 2 tridy (byt na zacatku vyvoje jsou totozne) a premapovavat mezi nimi. Nedejboze aby jste pouzival stejnou tridu na mapovani API a jako entitu v DB.

Re:SW pro náhradu kódu
« Odpověď #2 kdy: 01. 06. 2019, 02:31:19 »
Semanticke patchovani?

http://coccinelle.lip6.fr/

Re:SW pro náhradu kódu
« Odpověď #3 kdy: 01. 06. 2019, 08:52:21 »
Říká se tomu refaktoring a umí to každé lepší IDE. Nenapsal jste, o jaký jazyk jde, ale JetBrains mají IDE pro spoustu jazyků a patří ke špičce.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #4 kdy: 01. 06. 2019, 09:45:24 »
Říká se tomu refaktoring a umí to každé lepší IDE. Nenapsal jste, o jaký jazyk jde, ale JetBrains mají IDE pro spoustu jazyků a patří ke špičce.

Refaktoring by to byl pouze v případě, kdy by se neměnila funkcionalita. Ta se však mění.


Re:SW pro náhradu kódu
« Odpověď #5 kdy: 01. 06. 2019, 10:28:37 »
Refaktoring by to byl pouze v případě, kdy by se neměnila funkcionalita. Ta se však mění.
Že se mění funkcionalita kódu je vaše spekulace. Navíc ty nástroje se dají použít pro oba dva případy, protože mezi nimi neexistuje ostrá hranice – to, zda v daném případě jde nebo nejde o změnu funkcionality je věcí názoru. Kód má různé nezamýšlené vedlejší efekty (třeba už jenom to, jak dlouho se ve kterých situacích provádí). Nebo změníte chování v situaci, pro kterou funkce nebyla definována – a něco tím rozbijete, protože někdo na to nedefinované chování spoléhal.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #6 kdy: 01. 06. 2019, 12:39:47 »
Možná by se k tomuto účelu dal využít nástroj GNU m4, i když jeho primární účel je jiný.

Ink

  • *****
  • 655
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #7 kdy: 01. 06. 2019, 13:52:01 »
Kdyby UI uměla tohle, lidé jako Ty by byli bez práce.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #8 kdy: 01. 06. 2019, 15:01:34 »
IDE od jetbrains to umí. Pokud kód vypadá rozumně, je změna tabulky jediná operace.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #9 kdy: 01. 06. 2019, 15:03:02 »
Kdyby UI uměla tohle, lidé jako Ty by byli bez práce.

předpokládám, že hlavní náplní jeho práce není refaktoring.

Ink

  • *****
  • 655
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #10 kdy: 01. 06. 2019, 19:49:13 »
Kdyby UI uměla tohle, lidé jako Ty by byli bez práce.

předpokládám, že hlavní náplní jeho práce není refaktoring.

To nevím, ale položit otázku inteligentně taky neumí.

Re:SW pro náhradu kódu
« Odpověď #11 kdy: 02. 06. 2019, 08:35:00 »
Bez dalšího upřesnění se asi nedá napsat o moc víc, než co napsal Filip Jirsák. Nástroje pro refaktoring je kategorie nástrojů, které se cca hodí u refaktoringu, ale mohou se hodit i jindy – třeba v případě přidání parametru. Mám pocit, že do nástrojů pro refaktoring se háže skoro všechno, co v principu může mít globální dopad na kód.

V případě nástrojů od JetBrains souhlasím, že patří ke špičce. Nicméně Community edition vydávají nejspíš podle toho, kde mají konkurenci. Pokud budete chtít i práci se SQL, nejspíš budete potřebovat ultimate edition. Je na Vás, jestli Vám to za ty peníze ušetří dostatek práce. V případě jednorázových záležitostí se může vyplatit měsíční předplatné. Ale pokud to za ten měsíc ušetří aspoň tak hodinu nebo dvě (podle Vaší hodinovky a podle konkrétního produktu), pak se to začíná vyplácet. A pro nekomerční použití (opensource, studenti, …) za určitých podmínek jsou zdarma.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:SW pro náhradu kódu
« Odpověď #12 kdy: 02. 06. 2019, 12:31:06 »
Semanticke patchovani?

http://coccinelle.lip6.fr/
Máš s tím nějaké zkušenosti?

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:SW pro náhradu kódu
« Odpověď #13 kdy: 02. 06. 2019, 18:48:07 »
Když to umí Vim, tak by to mělo zvládnout každé IDE.