TDD, сделанный хорошо, может улучшить читаемость. TDD, выполненный плохо, то есть без учета других важных принципов, может снизить читабельность.
Парень, с которым я работал в середине 90-х, сказал бы: «Вы всегда можете сделать систему более гибкой, добавив слой косвенности. Вы всегда можете упростить систему, удалив слой косвенности». Гибкость и простота являются важными качествами системы. Эти два принципа часто могут жить вместе в гармонии, но часто они работают друг против друга. Если вы слишком далеко заходите в одну или другую крайность, вы отходите от идеала, который существует, когда эти два принципа сбалансированы.
TDD отчасти о тестировании, отчасти о дизайне. Плохое TDD может слишком сильно склоняться к гибкости или простоте. Это может привести к слишком большой гибкости. Объекты становятся более тестируемыми и часто более простыми, но сложная проблема предметной области затем выталкивается из объектов во взаимодействие объектов. Мы приобрели гибкость, и наивный взгляд может показаться, что мы приобрели простоту, потому что наши объекты проще. Сложность, однако, все еще там. Он перемещается из объектов в взаимодействие с объектами, где его сложнее контролировать. Здесь есть запахи кода, которые могут выступать в качестве красных флажков - система с сотнями мелких объектов и без больших объектов - это одно, а множество объектов с однострочными методами - это другое.
TDD, выполненный плохо, может двигаться и в другом направлении, то есть к слишком большой простоте. Итак, мы делаем TDD, сначала написав тест, но он мало влияет на наш дизайн. У нас все еще есть длинные методы и огромные объекты, и эти запахи кода могут пометить эту проблему красным цветом.
Теперь TDD по своей природе не выбьет вас из равновесия в любом направлении, при условии, что он хорошо применяется. Используйте другие методы, чтобы держать вас на пути. Например, нарисуйте, что вы делаете, прежде чем сделать это. Очевидно, не все время. Некоторые вещи слишком просты для этого. Некоторые изображения заслуживают того, чтобы их сохранить, некоторые - просто наброски, которые помогают нам визуализировать проблему, и мы, в различной степени, в основном изучаем визуальные эффекты. Если вы не можете нарисовать картину проблемы, вы не понимаете ее.
Как это поможет с TDD? Это поможет не дать системе зайти слишком далеко с точки зрения гибкости, с точки зрения простоты. Если вы рисуете картинку, и это уродливо, это красный флаг. Иногда это необходимо, но часто, когда вы рисуете картину, ваш ум быстро видит вещи, которые можно упростить. Решение становится более элегантным и упрощенным, более простым в обслуживании и более приятным в работе. Если вы не можете или не хотите рисовать изображения своей системы, вы упускаете эту возможность, чтобы сделать ваше программное обеспечение более четким, элегантным, красивым для просмотра и более простым в обслуживании.
Применение этого приходит с опытом, и некоторые кодировщики никогда не поймут значение, которое обеспечивает хороший баланс. Там нет метрики, которую вы можете запустить, который говорит вам, что вы находитесь в правильном месте. Если кто-то дает вам предписанный метод для достижения этой гармоничной точки, он лжет вам. Что еще более важно, он, вероятно, лжет самому себе, не осознавая этого.
Итак, мой ответ на ваш вопрос «да»: протестируйте все, не забывая другие хорошие принципы.
Любая хорошая практика сбивает вас с курса, если она не сбалансирована с другими хорошими практиками.