Isso é mais questão de gosto do que qualquer outra coisa, não existe consenso a respeito disso, e qualquer pessoa que te disser que é ou não boa prática vai estar te respondendo de acordo com a opinião dela.
Declarar a função antes é uma prática utilizada muito por quem tem costume de utilizar outras linguagens de programação que não possuem essa particularidade do JavaScript de permitir o uso da função antes de declarar. Declarar depois é uma prática que segue a seguinte lógica: o que é feito com a função é mais importante que a função em si, logo, ela deve vir primeiro. Ambas as práticas tem a vantagem de que o código da função está sempre perto de onde ela foi utilizada pela primeira vez, mas tem a desvantagem de que se a função for utilizada diversas vezes ao longo do código, ela pode se perder no meio de tudo e ficar difícil de localizar.
A minha preferência é declarar as funções ao final do código. Dessa forma, o fluxo do código fica organizado e simples de entender, sem pausas para declarar toda vez que uma função é utilizada, e se eu quiser procurar a função, sei que ela vai estar lá no fim.
Também é bom salientar que, em projetos reais, em geral, as funções são declaradas em arquivos diferentes do código que as utilizam, para que possam ser reutilizadas tantas vezes quanto forem necessárias.