- Use interfaces instead of classes where reasonable. This helps reduce implementation dependencies and allows users to provide implementations that can be used by the framework.
- Class members should be 'private' in most cases.
- Class and module methods should be scoped as restrictively as possible -
<internal>
or<private>
where appropriate.