It's a good practice always restore controlfile before restore the database?
It depends entirely on the nature of the failure and the need of recovery.  The ends-and-outs are too complex to put in a single answer here, but the Database Backup and Recovery User Guide has a whole section of scenarios on "Diagnosing and Responding to Failures". You would do well to study it.  And build yourself a private VM under VirtualBox, to practice on.

Recovering a database is the Prime Directive of any DBA.