// Hardware acceleration should be switched off.
// Originally we'd planned to use hardware acceleration but later
// on in the project's life cycle we were told we needed to support older
// versions of Foo: X and Y. This caused some bugs documented [here](#123) and [here](#234)
// due to incomplete support of feature Z and the way that [internMethod()](#internMethod) is currently implemented.
// @TODO: It would be better if we could switch it on or off depending on the device.
canvas.enableHardwareAcceleration(true);
Comments should be organic and give context.They should describe why and the high-level how, while code should describe what and the the low-level how.
That's just my opinion. This is the kind of comment I write. From time to time it becomes incorrect when a project's moving fast, but I write enough that it's very easy to validate that the use cases and code I'm talking about are real. You're meant to delete the comment immediately if it's incorrect: you can choose to help the next person understand the code or not, that's not up to me.
I think something that's very important is trying to show where a line of code or method fits in the greater scheme of the architecture of the code by linking it towards the methods that are interrelated in important ways.
Edit: You might notice I've left the comment not matching the code. This is a fact of life: somebody will change the code without updating the comment. However, because of the comment you now have a great way of sanity checking this change without having to find the original coder or test it all. Basically: it tells you what you couldn't quickly know looking at uncommented code.