1- add necessary comment into the javadoc of your classes/components as much as possible.
Usually, you are not the only user of the classes or components you defined before,
in order to ease other people to better or fully understand your thinking at the time you define your classes or components, adding some sample code or remark words into javadoc will be more helpful to others, even to yourself.
You may wonder why I would like to mention this point, here are some reasons for this:
Another story is , Since the original system is still using older version of some framework(can't upgrade for a reason of stability), in order to support some functionality, I have to implement some support components/classes for this, but after that, I found others were using it in a way of going against my orginal philosophy, and almost mess up my design and structure. So I have to add more comment into the javadoc to notify others how this comoponent is supposed to be used.
So, u see, it's a bilateral relationship, both for the orginal code author or the code user.
2- If you TDD first, Code second, then please document everything last as more details as possible.
Although you and others can find more information about your code later, but only unit tests are not enough, even though, you can't make sure whether you have created any unit tests.
So please go ahead to write document for your design and implementations, Agile doesn't mean no document, after you have finished your document, add links to your code. In this way, others or yourself later can find out what's going on with your design and implementations soon.
Everyone can benefit a lot from what you do.
Stay tuned!