Вот хороший ответ на Ваш вопрос:
habrahabr.ru/post/142564
На мой взгляд, CR - единственное средство борьбы с трудно уловимыми ошибками, которые обычно не удаётся воспроизвести на тестах, и которые вследствие хитрого сплетения обстоятельств не дают спокойно работать нашим пользователям.
Причём у нас три уровня борьбы, на каждом из которых используется CR: при детальном конструировании архитектор или ведущий разработчик анализирует готовый код на предмет корректного вмешательства в его работу (принцип "не навреди") и на предмет повторного использования готовых компонентов, затем после реализации проводится обзор кода на предмет его оптимальности и детального понимания принципов работы реализованного компонента (последнее важно для разработчиков, которые будут использовать компонент при дальнейшей работе над кодом), и, конечно, при диагностике сбоев системы.