No content of my own here, just a pointer to someone who really knows what he's talking about, Peter_sfdc, the mighty Peter Chittum, check out his reply here:
https://developer.salesforce.com/forums/?id=906F0000000AcdaIAC
(Of course, if you don't have a good reason to use Apex, you can always go with Flow, as explained by the equally mighty Mike Gill:
http://www.salesforceweek.ly/2015/02/how-to-create-roll-up-summaries-using-flow.html
http://www.salesforceweek.ly/2015/02/how-to-create-roll-up-summaries-using-flow-part-2.html
)