Как правило return уместен в случае, если выполнение алгоритма идёт по ненормальному сценарию, использование его приводит к меньшей вложенности кода, однако так же приводит и к возможному повторению общего для всех сценариев исполнения алгоритма кода выхода (например отключение логирования перед return (справиться с этим помогут, к примеру, аспекты)).
Использование return уместно в коде без сложных условий на выход.
В некоторых случаях от использования повторяющихся if поможет избавиться паттерн состояние (не в данном случае)
Про красивый код можно почитать
тут или же прочесть совершенный код Макконела. Так же есть смысл посмотреть руководства по стилю в каких-то больших проектах на том же github (они обычно лежат в разделе wiki), или, возможно, таковое есть на сайте msdn.