Our experiences developing and evaluating RadGrad have led to the incorporation of a number of design patterns and best practices for development. In general, patterns and practices form "standards" for development: if there is a situation in which these patterns or practices could apply but the code does not follow them, then there should be a justification for the exception.
These patterns and practices are emergent, and in most cases there will be "technical debt" in the system in the form of code that should, but does not, obey these patterns and practices. One goal of this chapter is to raise the profile of these patterns and practices so that new developers can more easily learn to identify old code that should not be used as a guideline for development of new code.
The remainder of this chapter provides a compendium of these patterns and practices.