Although splat and option hashes (double splat before double splat came along) are something I use everyday, I almost invariably end up thinking they increase (cyclomatic) complexity. Quite often, having a more strongly typed class as a method parameter instead of a hash is actually what I want. Double splat and the like sometimes make it easier to do the wrong thing. Worse still, they seem to promote it.