All streams
Search
Write a publication
Pull to refresh
1
0
Николай Ващенко @nickolas_v

Веб разработчик

Send message
Не получится еще по одной причине. «is_german_letter» мы выбрали как самый характерный пример, но то же верно относительно всех остальных используемых в ней функций. Там, по массиву наверняка придется поитерировать, числа поскладывать. И каждый раз мы упираемся в то, что "+" мы доверяем и итератеру мы тоже доверяем, что опять повлияет на итоговый выбор тестов, а следовательно затея с черным ящиком опять провалилась.

Плюс, заменив техзадание на «напишите number_of_specific_letters» — мы даже с is_german_letter проблему не решаем. Мы просто подвинули ее на 1 уровень выше, в том место, где это number_of_specific_letters будет вызываться. Там точно также встанет вопрос, доверяем ли мы is_german_letters, которое использовали как параметр.
Не будем лукавить — каждую новую строчку в эту череду if-oв, вообще говоря, добавлять проще, чем вот это общее «а+b». Здесь просто вырожденный случай, функция "+" уже написана, так что ее вызов получается короче, чем расширение хардкодингом. Обычно же, все наоборот, пишут функции которых еще нету, так что придется поднапрячься, что приведет к нарушению принципа «самая простая реализация», которая удовлетворяла бы тестам.
Вы можете возразить, что «это должно быть сделано на стадии рефакторинга, где это требование уже не действует», но тогда мы возвращаемся сразу к нашей статье, где и сказано о том(в терминах TDD), что непонятно, а после скольких тестов и захардкоженных ветвлений, нужно этим рефакторингом заниматься. Ведь с такой трактовкой, как ваша, настоящая программистская работа, where rubber hits the ground, где мы пишем алгоритм, происходит именно на стадии рефакторинга. И это все равно сводится к тому, что нужное количество тестов будет очевидно после фазы рефакторинга, что будет нарушением test-first. Это точно та же проблема, но просто несколько отложенная.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity