Приложение. Свод правил.
Тестирование
- Тестируйте граничные условия кода.
- Тестируйте пред- и постусловия.
- Используйте утверждения.
- Используйте подход защитного программирования.
- Проверяйте коды возврата функций.
- Тестируйте по возрастающей.
- Тестируйте сначала простые блоки.
- Четко определите, чего вы ожидаете на выходе теста.
- Проверяйте свойства сохранности данных.
- Сравните независимые версии.
- Оценивайте охват тестов.
- Автоматизируйте возвратное тестирование.
- Создавайте замкнутые тесты.
Производительность
- Автоматизируйте замеры времени.
- Используйте профилировщик.
- Концентрируйтесь на критических местах.
- Постройте график.
- Улучшайте алгоритм и структуру данных.
- Используйте оптимизацию компилятора.
- Выполните тонкую настройку кода.
- Не оптимизируйте то, что не имеет значения.
- Объединяйте общие выражения.
- Замените дорогостоящие операции на более дешевые.
- Избавьтесь от циклов или упростите их.
- Кэшируйте часто используемые значения.
- Напишите специальную функцию захвата памяти (аллокатор).
- Буферизуйте ввод и вывод.
- Специальные случаи обрабатывайте отдельно.
- Используйте предварительное вычисление результатов.
- Используйте приближенные значения.
- Перепишите код на языке более низкого уровня.
- Используйте минимально возможный тип данных.
- Не храните то, что можете без труда вычислить.
Переносимость
- Придерживайтесь стандарта.
- Следуйте основному руслу.
- Избегайте неоднозначных конструкций языка.
- Попробуйте несколько компиляторов.
- Используйте стандартные библиотеки.
- Используйте только то, что доступно везде.
- Избегайте условной компиляции.
- Выносите системные различия в отдельные файлы.
- Прячьте системные различия за интерфейсами.
- Используйте текст для обмена данными.
- Используйте при обмене данными фиксированный порядок байтов.
- При изменении спецификации изменяйте и имя.
- Поддерживайте совместимость с существующими программами и данными.
- Не рассчитывайте на ASCII.
- Не ориентируйтесь только на английский язык.