Здравствуйте, landerhigh, Вы писали:
L>Здравствуйте, _hum_, Вы писали:
__>>извините, но вы здесь описали вариант, когда либо готовый код правится, либо к готовому коду добавляется еще один готовый функциональный блок, и проверяется их совместимость. я нигде не увидел собственного написания.
L>Это и есть написание нового кода. Кода для парсинга определенных типов сообщений не было. Ты взял и написал его.
L>Править работающий год, добавляя новую функциональность, намного сложнее, чем писать с нуля. Поскольку помимо просто новой функциональности, разработчик обязан не сломать имеющуюся и правильно интегрировать новый код.
__>>ну, простейший пример — вам сказал тим лид — нужно написать функцию, транспонирующую матрицу. как в этом случае будет выглядеть работа с тестами без дебагера?
L>Вот сходил ты в курилку и придумал, что назовешь свою функцию
| | code |
| | L>L> Matrix transpose(const Matrix& original);
L>
L>Налил кофе и написал следующие три теста
L>L> TEST(transposeMatrix, transposeNegative)
L> {
L> // this is more a border case test
L> ASSERT_TRUE(transpose(emptyMatrix).empty()); // Also checks that we don't crash if matrix is empty
L> }
L> TEST(transposeMatrix, transposePositiveSymmetrical)
L> {
L> Matrix symmetricalMatrix = ...; // Initialize
L> Matrix expected = ...; // Manually transposed matrix
L> ASSERT_EQ(expected, transpose(symmetricalMatrix));
L> ASSERT_EQ(symmetricalMatrix, transpose(transpose(symmetricalMatrix)));
L> }
L> TEST(transposeMatrix, transposePositiveAsymmetrical)
L> {
L> Matrix asymmetricalMatrix = ...; // Initialize
L> Matrix expected = ...; // Manually transposed matrix
L> ASSERT_EQ(expected, transpose(asymmetricalMatrix ));
L> ASSERT_EQ(asymmetricalMatrix , transpose(transpose(asymmetricalMatrix )));
L> }
L>
|
| | |
L>Потом написал собственно код транспонирования.
L>Запустил тест. На все-про-все 5 минут времени и у тебя гораздо более полное покрытие, нежели ты может добиться ручными проверками в отладчике.
ну вы же просто написали тесты, которые могут сказать, есть ли ошибка в написанном коде или нет (и то не всякая, ибо вы не все варианты можете покрыть). а как быть, если ошибка-таки обнаружилась — сработали ваши ассерты?
как вы код править будете?
L>Ты мне лучше скажи, зачем тут вообще отладчик может понадобиться?
ну, например, в коде вы сделали описку — вместо resulted[i][j] = original[j][i] написали resulted[i][j] = original[i][j]Э, или у вас эксепш при вызове функции вылетает (вы неправильно рассчитали размерность транспонированной матрицы)
мне кажется, вы просто работаете на уровне, когда берете готовые блоки и начинаете их компоновать между собой. в этом случае, да, дебагер не очень нужен — обнаружили нестыковку — заменили блок и компоновку.