Alf, давай не будем обсуждать рефакторинг куска программы, вырванный из контекста и написанный на псевдокоде.
А в чем проблема-то? Паттерны проектирования обсуждаются, как правило, на псевдокоде, чтобы не привязываться к особенностям отдельно взятого языка. Рефакторинг тоже предлагается в общем виде, причем подвергаются ему небольшие фрагменты, а не громадные проекты в целом. Ни псевдокод, ни малость фрагмента не мешают понять ошибочные идеи, относящиеся к сути проекта и не связанные с плохим владением языком программирования - проблемы лежат глубже.
Есть разные языки и разные подходы к архитектуре.
Именно поэтому и возникла дискуссия. Если бы был один язык и один подход, проблемы выбора просто не было бы. Я бы сделал ссылку на соотвествующий ГОСТ, ISO и т.д. и на этом бы все закончилось. Чтобы выбирать не по красоте названия или разрекламированности, а глубже вникнуть в суть, и затеяно обсуждение.
Ведь это тема о тестировании, а не о разработке архитектуры?
Если судить с точки зрения тех, кого в организации Джона ласково именуют "документными шлюхами", то да - найдена комбинация кнопок, завешивающая программу, работа выполнена на отлично, можно почивать на лаврах. Мавр сделал свое дело.
Для программиста, коих здесь большинство, работа на этом не заканчивается, а только начинается. Обнаруженные ошибки нужно исправлять, а потом тестировать вновь. Совсем простые ошибки (присвоили не то значение или не той переменной, ошиблись с условием цикла и т.д.) можно исправить на месте. Более сложные могут привести к изменению архитектуры, ее изменение потебует рефакторинга и т.д.
Тестирование - лишь малая часть общей картины. Я просто начал с него, как с наименее изученной большинством части общего процесса. Это только начало долгого разговора.
Разработчики (или архитекторы, как угодно) допускают такие ошибки - это факт. Причины здесь не важны. Важен вопрос: как обнаружить такие ошибки на стадиях реализации, а не в процессе эксплуатации. Ответ: тестированием. Давайте же это и будем обсуждать
Это зависит от точки зрения. Мне не менее интересен другой вопрос: как не допустить подобных ошибок на стадии проектирования, чтобы реализовать их просто не удалось? Если вникнуть в причины ошибок, их и обнаруживать потом не придется.