Красивее, конечно так:
$(function(){
});
Это нормальная практика?
Зависит от сайта.
Если, к примеру, на странице находится кнопка с обработчиком и море рекламы\картинок, то посетителям придется ждать отгрузки всей этой кучи ресурсов, чтобы нажать на кнопку, действие которой никак не связано с ними. В таком случае логичнее делать:
<button></button>
<script type="text/javascript">$("button").click(...);</script>
Ну или:
<script type="text/javascript">function ok(){...}</script>
<button onclick="ok()"></button>
Если же сайт будет функционировать неадекватно до полной загрузки ресурсов или делать, как указано выше нет надобности, ваш вариант будет вполне правильным. В большинстве случаев так и делается, да и на душе спокойнее, когда весь DOM отгрузился.