Randomization is a basis for inferring treatment effects with minimal additional assumptions. Appropriately using covariates in randomized experiments will further yield more precise estimators. In his seminal work Design of Experiments, R. A. Fisher suggested blocking on discrete covariates in the design stage and conducting the analysis of covariance (ANCOVA) in the analysis stage. In fact, blocking can be embedded into a wider class of experimental design called rerandomization, and the classical ANCOVA can be extended to more general regression-adjusted estimators. Moreover, we argue that rerandomization and regression adjustment can be simultaneously used in both the design and analysis stages. Under the randomization-inference framework, we establish a unified theory allowing the designer and analyzer to have access to different sets of covariates. We find that asymptotically (1) for any given estimator with or without regression adjustment, using rerandomization will never hurt both the sampling precision and the estimated precision, and (2) for any given design with or without rerandomization, using our regression adjusted estimator will never hurt the estimated precision. Therefore, rerandomization trumps complete randomization in the design stage, and regression adjustment trumps the simple difference-in-means estimator in the analysis stage. Practitioners should always consider using a combination of rerandomization and regression adjustment.