First, you can roll the contract on either the first business day of expriation month or the last trading day of that contract. In most cases the rolling date has no signficant impact on results.
Second, to compute returns you must use prices from the same contract instead of two different contracts. For example, attached are futures prices for WTI crude oil. The last trading day of December contract 'CL2013Z' is 11/20/2013. The return on 11/20/2013 should be ln(93.33)-ln(93.34). However, the return on 11/21/2013 is NOT ln(95.44)-ln(93.33). It should be ln(95.44)-ln(93.85), i.e., both prices need come from the January contract. By doing this, you can avoid big jumps across contracts.
This is the typical way to calculate futures returns in academic research. See appandix in Singleton (2014).
The reason is that returns based on prices across contracts are actually unattainable. See Sanders and Irwin (2012).
By the way, some papers did in this way but they didn't say it.
Sanders, D. R. and Irwin, S. H. (2012). A reappraisal of investing in commodity futuresmarkets. Applied Economic Perspectives and Policy, 34(3):515–530.
Singleton, K. J. (2014). Investor flows and the 2008 boom/bust in oilprices. Management Science,60(2):300-318.