Finder: prohodit prořadí argumentů?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8227
+
0
-

V diskusi pod článkem o Nette\Finder zazněly názory, že by bylo lepší prohodit pořadí „co hledat & kde“ na „kde hledat & co“. Tedy místo

foreach (Finder::findFiles('*.txt')->in($dir) as $key => $file) {
}

psát (třeba)

foreach (Finder::findIn($dir)->files('*.txt') as $key => $file) {
}

Sloveso „find“ by mi v DSL chybělo, proto nechci prosté Finder::in(...) nebo Finder::from(...).

Možnosti jsou v zásadě čtyři:

  • nechat API tak, jak je (rozhodně je nevnímám jako jediné správné)
  • obrátit pořadí, tj. přidat statické metody findIn a findFrom a nahradit findFiles() a findDirectories() za files() a directories()
  • ponechat jako statickou jen find() bez parametrů a použít např. Finder::find()->files(...)
  • věc rozvolnit a povolit obě (nebo obě tři) formy zápisu

Uvnitř je třída navržená flexibilně a úpravy by byly jen povrchové. Dříve, než se k tomu vyjádříte, zkuste si napsat pár příkladů, třeba pro běžná vyhledávání. Tohle se skutečně nedá rozhodnout, pokud si to nevyzkoušíte.

Vyki
Člen | 388
+
0
-

Možnosti 3 a 4 bych nevolil. Ta třetí zbytečně zápis prodlužuje, čtvrtá se mi nelíbí, protože by v tom byl guláš, 2 možnosti zápisu by byly asi ještě v pohodě, ale tři se mi zdá už moc. Nejvíce se mi zamlouvá dvojka.

jtousek
Člen | 951
+
0
-

stávající zápis +1

arron
Člen | 464
+
0
-

Jenom jsem to videl vedle sebe a jsem pro obratit poradi.

jansfabik
Člen | 193
+
0
-

Já bych byl radši pro tu obrácenou variantu, ale Finder::findIn se mi moc nelíbí a Finder::in taky moc ne.

David Grudl napsal(a):
Sloveso „find“ by mi v DSL chybělo, proto nechci prosté Finder::in(...) nebo Finder::from(...).

Co takhle Search::in(), příp. Search::forFiles() a Search::forDirectories()?

foreach (Search::in($dir)->forFiles('*.txt') as $key => $file)

Mě se to takhle krásně píše, protože se to tak i čte: „Hledej v $dir soubory *.txt.“

xTrip
Člen | 15
+
0
-

Mě se to takhle krásně píše, protože se to tak i čte: „Hledej v $dir soubory *.txt.“

Mě se krásně píše tak jak to je včíl. „Hledej *.txt v $dir“ – nejdříve říkám CO CHCI a pak teprve KDE to mám najít.

22
Člen | 1478
+
0
-

tak tak, do vyhledavace taky pisu napred co a pak kde a dalsi priklad z praxe je array_search(co, kde)

Editoval 22 (22. 9. 2010 10:13)

toka
Člen | 253
+
0
-

Jsem pro zachování stávajícího zápisu. Čistě teoreticky, v případě velkého zájmu, proč neumožnit obě varianty?

Filip Procházka
Moderator | 4668
+
0
-

přesně, vždycky když používám nějakou interní funkci v php tak si říkám „co kde“ abych nemusel koukat na argumenty, protože mám děravou paměť. Nechci si pamatovat další vyjímku…

//edit: na druhou stranu Nette má většinou opačnou konvenci, třeba String::match ← kde co

Editoval HosipLan (22. 9. 2010 10:31)

pekelnik
Člen | 462
+
0
-

Jsem též pro zachování stávajícího stavu. Přijde mi velmi elegantní a navrch také použitelné.

Mesiah
Člen | 240
+
0
-

současný zápis mi příjde zcela přirozený, když jsem si četl na phpfashion komentáře, tak jsem si říkal, že by to mohlo být taky dobry, ale takhle naživo… no.. ne.

Další co se mi fakt líbí je Finder::find()->files(...) ještě kdyby to bylo fluent, tak by každá strana mohla psát „dotazy“ jak by si přála :)

hanakus
Člen | 22
+
0
-

Určitě ne více způsobů, byl by v tom bordel.