Context functions accepting either ID or struct

Do you think it’s not a bad practice for context functions to systematically accept either the struct or the ID through two clauses:

def do_something(%Foo{} = foo) do
  # do something
end

def do_something(foo_id) do
  do_something(get_foo!(foo_id))
end