Framework vs. čistý kód

Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #60 kdy: 23. 07. 2025, 20:10:55 »
Proc bych to delal? Kdo by me za to platil? Porad si zijes ve sve bubline akademickych znalosti a nechapes, ze byznys jede jinde.

Než se lopotit s frameworkem, který nedodržuje DP ani SOLID, tak si to raději napíši sám a pořádně. Stejně nejvíc práce je s výstupní šablonou, u které moderní frameworky neumí ani dědičnost, ani rekurzi. Raději použiji šablonovací jazyk, který funguje i v jiných jazycích než v PHP a umí dědičnost i rekurzi.


Re:Framework vs. čistý kód
« Odpověď #61 kdy: 24. 07. 2025, 14:53:36 »
Jenže spousta dnešních frameworků je napsána bez teoretických základů a snaží se nahradit standardní knihovny, které jsou již součástí jazyka. Například šablonovací systémy v PHP jsou dost závažnou tragédií a přitom PHP obsahuje luxusní knihovnu, která generuje validní HTML, umí dědičnost, rekurzi, procházení stromem, řazení, překrývání default parametrů a další užitečné vlastnosti. Navíc je rychlá a vytvořená šablona se dá beze změny používat i v Javě, Pythonu a dalších jazycích, které tuto knihovnu mají implementovánu.

Len tak pre zaujímavosť, ktorú konkrétnu knižnicu máš na mysli?

Re:Framework vs. čistý kód
« Odpověď #62 kdy: 24. 07. 2025, 15:22:08 »
Len tak pre zaujímavosť, ktorú konkrétnu knižnicu máš na mysli?


Neptej se...   ;D az se provali ze mluvi o XML/XSLT bude z toho dalsi flamewar  :D

Re:Framework vs. čistý kód
« Odpověď #63 kdy: 24. 07. 2025, 15:40:48 »
Já vám řeknu, v Pythonu je takový framework a jmenuje se Bottle, je to ještě osekanější než Flask. A je podle mě úplně super, dokonce už i pár let nikdo nešáhnul na jeho jediný zdroják, tipuju že už je vyladěn :D

A jeho SimpleTemplate nemá ani kontrolu uživatelského vstupu.

A já bych ten framework úplně v klidu používal na svoje osobní věci - proč? Protože jaký je problém v tom, si tam prostě jednou tu metodu, která uživatelské vstupy ošetří, napsat?

Jenže problém s ním spočívá v něčem jiném - není pro něj podpora v IDEčku, ani v Pycharmu. A to je hlavní kámen úrazu - když budu psát template a mi to ani nezvýrazní syntax, tak jak s tím asi udělám nějaký větší projekt? Zkoušel jsem si kvůli toho napsat pro Pycharm svůj plugin, a vykašlal jsem se na to, je to složité jak hrom. IntelliJ ani neumí nějak jednoduše umožnit, abych třeba pomoc regexu si definoval, co jsou projektová klíčová slova, aby mi je to umělo našeptat. Smůla.

PHP, React, Thymeleaf, Ruby, Django, ASP.NET, ty mají všechny podporu v IDE pro ty svoje templates.

Ale na Rest API bych ho klidně použil.
« Poslední změna: 24. 07. 2025, 15:42:22 od registrovany123 »
Od roku 2005 se zabývám SW Vývojem, načež od roku 2015 je to i mé povolání. Specializuji se na Javu, a v posledních letech i na Python a intranetové aplikace v Reactu. Delám v AWS Cloudu.

Mudvy

Re:Framework vs. čistý kód
« Odpověď #64 kdy: 24. 07. 2025, 23:17:25 »
z pohledu desktopového vývojáře co dělá WPF / knihovny / konzole / API ... tak moc nerozumím místní diskusi. Framework používám jen ten co je od MS v .NET. Nugety třetích stran pouze vyjímečně a jen pokud si s sebou netahají miliony referencí. Nedokážu si představit, že bych měl dělat desktopovku bez wpf pouze v základním c#.

S čím však souhlasím je mít věci pod kontrolou a netahat si do projektu zybtečnosti co sotva umím využít. Čím míň závyslostí tím lépe.

Pokud moje aplikace pracuje s citlivými informacemi, nechci aby to šlo do nějakcýh random knihoven nebo frameworků jen abych si ušetřil pár dní práce.

Koneckonců spoustu věcí jsem si za tu dobu už postavil sám do svých knihoven které recykluji.


Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #65 kdy: 25. 07. 2025, 14:26:22 »
z pohledu desktopového vývojáře co dělá WPF / knihovny / konzole / API ... tak moc nerozumím místní diskusi. Framework používám jen ten co je od MS v .NET. Nugety třetích stran pouze vyjímečně a jen pokud si s sebou netahají miliony referencí. Nedokážu si představit, že bych měl dělat desktopovku bez wpf pouze v základním c#.

C# je koncipován jako štíhlý základní jazyk plus knihovny a frameworky. U něj se tedy předpokládá, že vývojář vybere některý z frameworků a na něm postaví aplikaci. Podobné je to u Pythonu či Javy, i když Python má toho už v základu víc.

PHP má spoustu knihoven integrovánu již v základní výbavě. Práce s databázemi, JSON, XML, obrázky, ... to umí PHP v základu a není potřebné volat nějakou knihovnu. Je jich tolik, že se aplikace dá zpravidla napsat i bez externích knihoven a frameworků. Jen je vývojáři musí umět používat.

Re:Framework vs. čistý kód
« Odpověď #66 kdy: 26. 07. 2025, 12:24:47 »
No PHP toho má spoustu v základní výbavě. Ale pokud se něco nezměnilo, i u jednoduchých aplikací se framework hodí:

1. Jednoduchý formulář funkční bez JS, s validací. Když data nejsou validní, zobrazit formulář i s daty. Kontrolovat, jestli skutečně dostávám string, nebo třeba pole. Možná ještě řešit CSRF. Prostě takové základní věci. Bez frameworku to je opruz a náchylné na chybu.
2. OK, dnes bychom mohli akceptovat, že potřebujeme JS, a bez něj formulář fungovat nebude. Poslat můžeme třeba i JSON, vrátit můžeme též JSON. Opět ale validace dat (a případně řešení CSRF) je bez nějaké aspoň jednoduché knihovny opruz.

Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #67 kdy: 26. 07. 2025, 15:54:48 »
No PHP toho má spoustu v základní výbavě. Ale pokud se něco nezměnilo, i u jednoduchých aplikací se framework hodí:

1. Jednoduchý formulář funkční bez JS, s validací. Když data nejsou validní, zobrazit formulář i s daty. Kontrolovat, jestli skutečně dostávám string, nebo třeba pole. Možná ještě řešit CSRF. Prostě takové základní věci. Bez frameworku to je opruz a náchylné na chybu.
2. OK, dnes bychom mohli akceptovat, že potřebujeme JS, a bez něj formulář fungovat nebude. Poslat můžeme třeba i JSON, vrátit můžeme též JSON. Opět ale validace dat (a případně řešení CSRF) je bez nějaké aspoň jednoduché knihovny opruz.

Zmíněné doplňky se dají uložit do několika málo tříd. Stačí je tedy dát do jedné knihovny a tu používat. Není tedy třeba kvůli tomu instalovat celý framework, který mě nutí programovat stylem autora frameworku. Obvyklou architekturu MVC si umím udělat lépe než framework, který používá MVP a vydává ji za MVC, protože je to víc cool. Místo Dependency Injection používá Service Locator a vydává to za DIC. Šablonovací jazyk napsaný v šablonovacím jazyce. Proč bych měl používat něco tak pokřiveného?

BoneFlute

  • *****
  • 2 043
    • Zobrazit profil
Re:Framework vs. čistý kód
« Odpověď #68 kdy: 26. 07. 2025, 20:29:15 »
To jsou ty silácký řeči. Narážím na projekty, které jsou vytvářeny bez FW, protože autor si myslí, že to není třeba, nebo ba co hůř, že to zvládne líp. A nikdy to není pravda. A to si dokonce ani nemyslím, že by to byli nějací méně schopní vývojáři.

Klasický vývoj zkušeností:
- junioři zásadně používají FW na všechno
- medioři zásadně nepoužívají FW
- senioři používají FW a v ušetřeném čase chodí na pláž

Re:Framework vs. čistý kód
« Odpověď #69 kdy: 26. 07. 2025, 22:09:25 »
Kit: Jenže tady mi přijde, že se od „Nepitřebuju framework“ dostáváme k „Vytvářím vlastní framework, protože existující mi nevyhovují.“. Nechám stranou výhodu vašeho/tvého přístupu oproti jiným frameworkům (to by tu už bylo asi hodně OT), podstatné je, že tomu bych pak neřekl vývoj bez frameworku.

BoneFlute: Tak ony budou existovat věci, kde framework smysl fakt nedává. Dělal jsem třeba skript, který podle nějakých kritérií řadí řádky na vstupu. Něco jako /usr/bin/sort, ale s jinými kritérii řazení. Nečte to nic z cmdline, jen ze stdin řádek po řádku. Framework by tu asi ničemu nepomohl.

Na druhou stranu, hranice, kdy se nějaký vhodný framework vyplatí, může být i docela nízko.

Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #70 kdy: 26. 07. 2025, 22:33:13 »
Kit: Jenže tady mi přijde, že se od „Nepotřebuju framework“ dostáváme k „Vytvářím vlastní framework, protože existující mi nevyhovují.“. Nechám stranou výhodu vašeho/tvého přístupu oproti jiným frameworkům (to by tu už bylo asi hodně OT), podstatné je, že tomu bych pak neřekl vývoj bez frameworku.

Neřekl bych, že si vytvářím vlastní framework, ale vlastní knihovnu tříd, které používám ve svých projektech. Souhlasím, že stávající frameworky mi nevyhovují, protože mi až nepříjemně diktují, jak má moje aplikace vypadat. Svou štíhlou knihovnu však nepovažuji za framework. Důsledná aplikace SOLID mi umožňuje ji snadno rozšířit o další vlastnosti.

BoneFlute

  • *****
  • 2 043
    • Zobrazit profil
Re:Framework vs. čistý kód
« Odpověď #71 kdy: 27. 07. 2025, 15:20:41 »
BoneFlute: Tak ony budou existovat věci, kde framework smysl fakt nedává. Dělal jsem třeba skript, který podle nějakých kritérií řadí řádky na vstupu. Něco jako /usr/bin/sort, ale s jinými kritérii řazení. Nečte to nic z cmdline, jen ze stdin řádek po řádku. Framework by tu asi ničemu nepomohl.

Na druhou stranu, hranice, kdy se nějaký vhodný framework vyplatí, může být i docela nízko.

Jistě. Pokud dělám jen nějakou rychlovku, něco malého, kde z toho FW vlastně nevyužiju nic, tak samozřejmě nemá smysl ho používat. O tom žádná.

Stala se mi taková věc, že jsem dostal od klienta na vstupním pohovoru zadání, a součástí zadání byl zákaz používat FW. Jenže to zadání nebylo úplně jednořádkové. Tak jsem si musel spatlat vlastní loader, vlastní DIC, vlastní FrontController. Ve výsledku jsem dostal velkou pochvalu, ale stejně bych to do produkce necpal. FW je o tom, že se kumulují schopnosti a znalosti. Mám uplatňovat své zkušenosti na výběr vhodného řešení. Ne na to, abych jako trubka si všechno psal sám.

Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #72 kdy: 27. 07. 2025, 21:04:40 »
Stala se mi taková věc, že jsem dostal od klienta na vstupním pohovoru zadání, a součástí zadání byl zákaz používat FW. Jenže to zadání nebylo úplně jednořádkové. Tak jsem si musel spatlat vlastní loader, vlastní DIC, vlastní FrontController. Ve výsledku jsem dostal velkou pochvalu, ale stejně bych to do produkce necpal. FW je o tom, že se kumulují schopnosti a znalosti. Mám uplatňovat své zkušenosti na výběr vhodného řešení. Ne na to, abych jako trubka si všechno psal sám.

Třeba to mělo být na 20-30 řádek a ty sis kvůli tomu vyrobil framework.

Ty používáš jen jeden DIC?

Re:Framework vs. čistý kód
« Odpověď #73 kdy: 28. 07. 2025, 19:10:33 »
Mě by v práci nenapadlo nepoužít framework, používám Spring a na FE React, ale doma momentálně laboruju s Python Bottle a Server side redneringem. A člověk by ani neřekl, kolik se toho v tom dá udělat, ale problém spočívá v podpoře v IDE, která je katastrofická - a nejde ani tak o Python část zdrojáků, tam framework nepotřebuju, ale jde o ty jeho templates.

Takže Bottle podporu pro svoje templates vůbec nemá, pak je tam Mako templates - tyhle byly velice oblíbené ale JetBrains dropnul podporu už v roce 2021. Teď je tam tiket v jejich systému, má podporu 80 likes aby vrátili zpatky podporu pro ty Mako templates, ale smůla, už několik let tam podpora není.

Pak je tam Jinja template, to tam plugin má a momentálně je používám, ale je to katastrofa, nedokáže to propojit vstupní parametry s těmi co jsou v templatu, ani to neumí propojit volání fragmentu, nejen že to nenašeptá parametry, ale nepropojí to ani metodu. Hrůza je to. Už jsem v tom naprogramoval kus aplikace a asi to vzdám a přepíšu to do něčeho jiného.

A zdůrazňuju, že to není kvůli tomu mikro frameworku samotnému, ale je to kvůli podpoře v IDE. Bez ní se to prostě nedá.

Dobrou podporu v IDE má Django, ale mám k tomu frameworku nějaký odpor, pokaždé jak vidím ty jejich tzv. "batteries" included, tak mě to odradí, dávají tam řadu věcí, které nepotřebuju. Dokonce i svoje ORM namísto SQL Alchemy - kdoví, jaká úskalí to skýtá.

Nejlepší Keep it simple "template" je to, co má PHP, ASP, nebo co měly staré JSP a nebo právě to, co měly Mako templates nebo co má Python Bottle - a ty nejlepší "templates" jsou ty, kde se píše přímo kód. To jsou IMO nejlepší templates. Hlupáci to historicky zarazili, protože v tom lidi prasili, ale v roce 2025 se všude používá React a to je defacto v pricnipu právě to, co byly JSP nebo PHP, prostě kód a html jsou dohromady.

Bohužel, vždycky když je něco dobrý způsob který funguje, tak musí přijít nějaký dbl, který to zničí a zkomplikuje. Aby to náááhodou nebylo potom, pro ostatní až moc jednoduché.
« Poslední změna: 28. 07. 2025, 19:15:24 od registrovany123 »
Od roku 2005 se zabývám SW Vývojem, načež od roku 2015 je to i mé povolání. Specializuji se na Javu, a v posledních letech i na Python a intranetové aplikace v Reactu. Delám v AWS Cloudu.

Kit

  • *****
  • 836
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #74 kdy: 28. 07. 2025, 20:42:14 »
A zdůrazňuju, že to není kvůli tomu mikro frameworku samotnému, ale je to kvůli podpoře v IDE. Bez ní se to prostě nedá.

Podporu frameworků v IDE raději vůbec nehledám. Možná i proto mi připadají takové těžkopádné. Pro mne jednodušší připojit vlastní knihovnu tříd které se snažím udržovat stylem KISS.