История изменений
Исправление
kirk_johnson,
(текущая версия)
:
Ну, во-первых, успешное прохождение тестов не означает правильную прогрмму («тестирование доказывает наличие ошибок, но не их отсутствие», да), но, по сравнению с Си++, в Rust наличие целого класса ошибок исключено (или сведено к минимуму, см. выше), поэтому за те же деньги то же время ты получаешь продукт лучшего качества.
Вот с этим я и не согласен, потому что тест Option от теста ptr/NULL не отличается вообще ничем. Только два валидных значения, и тебе оба нужно проверить. Поведение в обоих случаях абсолютно детерминированно.
Выигрыш только в одном — если ты не тестируешь функцию, а там баг, то ты не получишь SIGSEGV. Что, иногда, бывает значительно хуже, чем если бы ты его получил. А иногда не бывает, как повезет.
Во-вторых, зависит от того, что что ты тестируешь: если исключительно прикладную логику - естественно, выигрыша (по количеству тестов) не будет. Но если что-то похитрее (реакцию на мусорные указатели, например) - то в Rust такие тесты не нужны.
А можно пример реально полезного теста на мусорный указатель? Потому что я не могу себе представить, зачем он может быть нужен, если только ты какие-нибудь там canary в glibc не тестируешь. В любых других ситуациях слишком высока неопределенность.
Исправление
kirk_johnson,
:
Ну, во-первых, успешное прохождение тестов не означает правильную прогрмму («тестирование доказывает наличие ошибок, но не их отсутствие», да), но, по сравнению с Си++, в Rust наличие целого класса ошибок исключено (или сведено к минимуму, см. выше), поэтому за те же деньги то же время ты получаешь продукт лучшего качества.
Вот с этим я и не согласен, потому что тест Option от теста ptr/NULL не отличается вообще ничем. Только два валидных значения, и тебе оба нужно проверить. Поведение в обоих случаях абсолютно детерминированно.
Во-вторых, зависит от того, что что ты тестируешь: если исключительно прикладную логику - естественно, выигрыша (по количеству тестов) не будет. Но если что-то похитрее (реакцию на мусорные указатели, например) - то в Rust такие тесты не нужны.
А можно пример реально полезного теста на мусорный указатель? Потому что я не могу себе представить, зачем он может быть нужен, если только ты какие-нибудь там canary в glibc не тестируешь. В любых других ситуациях слишком высока неопределенность.
Исходная версия
kirk_johnson,
:
Ну, во-первых, успешное прохождение тестов не означает правильную прогрмму («тестирование доказывает наличие ошибок, но не их отсутствие», да), но, по сравнению с Си++, в Rust наличие целого класса ошибок исключено (или сведено к минимуму, см. выше), поэтому за те же деньги то же время ты получаешь продукт лучшего качества.
Вот с этим я и не согласен, потому что тест Option от тест ptr/NULL не отличается вообще ничем. Только два валидных значения, и тебе оба нужно проверить. Поведение в обоих случаях абсолютно детерминированно.
Во-вторых, зависит от того, что что ты тестируешь: если исключительно прикладную логику - естественно, выигрыша (по количеству тестов) не будет. Но если что-то похитрее (реакцию на мусорные указатели, например) - то в Rust такие тесты не нужны.
А можно пример реально полезного теста на мусорный указатель? Потому что я не могу себе представить, зачем он может быть нужен, если только ты какие-нибудь там canary в glibc не тестируешь. В любых других ситуациях слишком высока неопределенность.