Továrny na objekty Nette frameworku – odstranění skrytých závislostí

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
2bfree
Člen | 248
+
0
-

Rád bych se zeptal, co si komunita a @DavidGrudl myslí o nápadu, že by se pro každou třídu Nette Frameworku, vytvořila továrna respektive interface továrny a následně by se upravil stávající kód, aby používal tyto továrny namísto stávající přímého vytváření objektů?

Slibuji si od toho:

  • vyšší flexibilitu
  • ostranění skrytých závislostí
  • lepší podpora pro jednotkové testování
Tomáš Votruba
Moderator | 1114
+
+1
-

Ahoj, můžeš uvést konkrétní příklad na nějaké třídě?

2bfree
Člen | 248
+
0
-

Například tady: https://api.nette.org/…ter.php.html#948
Ale zkusil bych to řešit plošně všude, kde je new NazevTridy krome výjimek.

Tomáš Votruba
Moderator | 1114
+
0
-

Tedy něco jako Contracts v Laravelu?

Nápad dobrý. Zkus poslat malý pull request (např. na odkazovaný kód) a uvidíš.

Jan Tvrdík
Nette guru | 2595
+
+5
-

Nesouhlasím, používat factory na value objekty je overkill.

David Grudl
Nette Core | 8239
+
+4
-

Myslím, že Nette je dekomponováno velmi slušně a krom výjimek a value objektů, kde to nemá žádný užitek, všechno vytváří pomocí továrniček.

Jan Tvrdík
Nette guru | 2595
+
0
-

@2bfree Pokud narazíš na nějaký konkrétní problém, kde by tě současný stav Nette omezoval, tak napiš, ale jinak myslím není potřeba nic řešit.

Šaman
Člen | 2666
+
0
-

Já už jsem i přestal učit, že jedna z výhod DI je odstranění sktytých závislostí. Je to spíš vedlejší efekt, ale není to základní princip.
Je na tobě, jak si problém skrytých závislostí vyřešíš v projektu a navrhované řešení je jedním z nich. Ale nevidím důvod vyžadovat to samé i pro framework. Nette je pro tebe jedna (resp. dnes několik) závislost a její vnitřní závislosti ty jako uživatel Nette neřešíš.

Pokud to navrhuješ jako vývojář Nette, tak můj post klidně ignoruj a soustřeď se na komentáře od autorů frameworku.