Custom registration form with custom fields

I have been searching the support questions and only finding old threads or confusing information. If I need to have custom registration form designed with custom fields, what is the best/easiest way to handle this. I need to collect approx 20+ more fields than a basic registration form. Step by step would be best or a link to most current information.