Прячьте детали реализации.
Ограничьтесь небольшим набором независимых примитивов.
Не делайте ничего "за спиной" у пользователя.
Всегда делайте одинаковое одинаково.
Высвобождайте ресурсы на том же уровне, где выделяли их.
Обнаруживайте ошибки на низком уровне, обрабатывайте на
высоком.
Используйте исключения только для исключительных
ситуаций.
<