Solution packages (.wsp files) are the best practice for deploying custom code to SharePoint farms as they provide versioning, reusability, and proper deployment/retention processes. Web parts and user controls are components that can be deployed within solution packages, but the package itself is the deployment mechanism. SharePoint Designer is for customization, not code deployment.