Какой метод программирования помогает вам больше всего избегать или устранять ошибки до их появления - PullRequest
12 голосов
/ 24 августа 2009

Я не имею в виду внешние инструменты. Я думаю об архитектурных моделях, языковых конструкциях, привычках. Меня больше всего интересует C ++

Ответы [ 28 ]

32 голосов
/ 24 августа 2009

Автоматическое модульное тестирование.

20 голосов
/ 24 августа 2009

Существует часто недооцениваемая техника, которую я люблю называть Команда QA , которая может творить чудеса за устранение ошибок до того, как они достигнут производства.

Мой опыт (и его часто цитируют в учебниках) заключается в том, что программисты не делают лучших тестировщиков, несмотря на то, что они думают, потому что они склонны проверять поведение, которое, как они уже знают, подтверждается их кодированием. Вдобавок ко всему, они часто не очень хороши в том, чтобы поместить темы в шкуру конечного пользователя (если это приложение такого типа), и поэтому могут пренебречь проблемами форматирования / выравнивания / удобства использования пользовательского интерфейса.

Да, модульное тестирование очень важно, и я уверен, что другие могут дать вам лучшие советы, чем я, но не пренебрегайте тестированием вашей системы / интеграции. :)

.. и эй, это не зависящая от языка техника!

18 голосов
/ 24 августа 2009
16 голосов
/ 24 августа 2009

Я считаю следующее довольно удобным.

1) АССЕРТА.
2) Регистратор отладки, который может выводить в отладочную программу, консоль или файл.
3) Инструменты отслеживания памяти.
4) Юнит тестирование.
5) Умные указатели.

Я уверен, что есть тонны других, но я не могу думать о них из головы:)

15 голосов
/ 24 августа 2009

RAII , чтобы избежать ошибок утечки ресурсов.

14 голосов
/ 24 августа 2009
  1. Стремитесь к простоте и лаконичности .
  2. Никогда не оставляйте случаи, когда ваш код поведение не определено .
  3. Ищите возможности использовать систему типов и максимально проверяйте компилятор во время компиляции. Шаблоны и генерация кода - ваши друзья, если вы придерживаетесь здравого смысла.
  4. Минимизируйте количество синглетонов и глобальных переменных.
  5. Использование RAII !
  6. Использовать утверждений !
  7. Автоматическое тестирование некоторых номинальных и всех угловых случаев.
  8. Избегайте изменений в последнюю минуту, таких как чума.
13 голосов
/ 24 августа 2009

Я использую мышление.

8 голосов
/ 24 августа 2009

Сокращение области видимости переменных до максимально узкого значения. Меньше переменных в области видимости - меньше шансов внедрить и скрыть ошибку.

7 голосов
/ 24 августа 2009

Я обнаружил, что чем больше сделано и проверено во время компиляции, тем меньше может произойти сбой во время выполнения. Поэтому я пытаюсь использовать методы, которые позволяют более строгую проверку во время компиляции. Это одна из причин, по которой я занялся программированием мета-шаблонов. Если вы что-то делаете неправильно, он не компилируется и, следовательно, никогда не покидает ваш стол (и, следовательно, никогда не попадает к клиенту).

5 голосов
/ 24 августа 2009

Обучение функциональному программированию помогает как-то. ЗДЕСЬ
Узнай, как много добра.

...