Finder: prohodit prořadí argumentů?
- David Grudl
- Nette Core | 8227
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
afindFrom
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.
- jansfabik
- Člen | 193
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(...)
neboFinder::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.“
- Filip Procházka
- Moderator | 4668
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)
- Mesiah
- Člen | 240
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 :)