Frequently when we introduce a new feature into an application we may produce artifacts, such as useful methods or classes that could be reused in other areas of our applications. These artifacts are not necessarily documented as functional requirements as they are usually a side-effect of our implementation choices. Since we often develop in teams, it is important to share these pieces of code to prevent rework and duplication.
Examples:
- Utility methods and classes
- A Base class
- An Interface
- A GUI control
What have you found to be the most effective way of sharing these artifacts?
How do you convey the assumptions you made when you created them?
How do you ensure they are consumed correctly?
I am interested in best practices and proven techniques around documentation, code diagrams, meetings(?) to ensure code is reused correctly.
This question is very similar to: http://stackoverflow.com/questions/869364/finding-reusable-code but I'm interested in a more proactive than reactive approach.