IJ
Size: a a a
IJ
IJ
M
К
result = a - b
, если и так написано substract a b = a - b
? Ведь, чисто с технической точки зрения, мы просто увеличиваем корректность кода повторением одного и того же в двух разных местах. Но, ведь, нет никаких гарантий, что ошибка именно на уровне типов, а не на уровне термов. Во-вторых, тесты делают то же самое. И можно строго доказать, что не нужно проверять каждую функцию в программе, а достаточно проверять свойства на верхнем уровне, и тогда с высокой степенью вероятности substract будет вести себя, как -
.Certigrad
, где для обоснования простого градиентного спуска потребовалась годовая работа института. Хотя, на бумажке это делается минут за 15.#undefined
, как функцию, и вот тебе тестовый контрпример.Что я не вижу, не замечаю и игнорирую?
А попробуйте подумать не о том, как это Вам может помешать, а о том, как это может Вам помочь.МБ
Что я не вижу, не замечаю и игнорирую?
А попробуйте подумать не о том, как это Вам может помешать, а о том, как это может Вам помочь.-
реализован, как операция на индуктивных типах. А если -
аксиоматический, зависит от реализации и т.д. и т.п. То степень гарантированности снижается.substract
. Тестировать надо более крупные блоки кода. Если функция обращения матриц обращает случайную матрицу корректно, то вопрос: какова вероятность того, что мой минус написан неправильно?К
-
реализован, как операция на индуктивных типах. А если -
аксиоматический, зависит от реализации и т.д. и т.п. То степень гарантированности снижается.substract
. Тестировать надо более крупные блоки кода. Если функция обращения матриц обращает случайную матрицу корректно, то вопрос: какова вероятность того, что мой минус написан неправильно?Ну, и я настаиваю, что нет никакой целесообразности тестировать поведение функции substract.
Это утрированый пример, разве неясно?МБ
Ну, и я настаиваю, что нет никакой целесообразности тестировать поведение функции substract.
Это утрированый пример, разве неясно?К
IJ
IJ
IJ
МБ
PS
К
M
К
МБ
PS
МБ
M