V JS je tohle best practice. Říká se tomu option object.
http://www.codereadability.com/what-are-javascript-options-objects/
Mě se to vůbec neosvědčilo.
Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.
Jako v Pythonu jsou ty pojmenované parametry šikovná věc. Ale alespoň ti to hlídá platné argumenty. Bez toho je to tak nějak naprd.
Tohle se musí podchytit v jednotkových testech, jinak se případná chyba hledá blbě. Spešl objekt (např. Messenger) můžeš použít také a chovat se to bude prakticky stejně.
Otázkou je, zda potřebuješ validovat vstupní hodnoty ještě předtím, než je předáš metodě. Mně se osvědčila validace uvnitř metody, resp. validátor se dá injektovat jako druhý parametr.
Metody, které taková data zpracovávají, si vždy ta data kontrolují a sanitují do takové míry, jakou potřebují. Jiné požadavky bude mít insert(), jiné search() a jiné find(). Vstupní data však mohou být pokaždé stejná.