Есть ли язык программирования, который можно проверить по дизайну или, по крайней мере, обладает очень хорошими свойствами с точки зрения проверки?
Например, язык программирования, разработанный таким образом, что модульное тестирование является необязательной частью процесса кодирования или, еще лучше, языком программирования, где программа более или менее выводится из модульных тестов.
Или, если вы предпочитаете немного закручивать вопрос, какое обязательное программирование является плохой практикой или ненужным для обеспечения возможности тестирования?
Как насчет объектно-ориентированного программирования? Такие вещи, как инъекция зависимостей, и насмешливые библиотеки действительно помогли TDD, wouldn Эти методы выигрывают от того, чтобы быть частью дизайна языка? Я смотрю вокруг, а языки с богатыми метамоделями, как правило, позволяют использовать DSL-подобные API, которые должны быть написаны на целевом языке. Эти библиотеки строятся поверх этого, почему бы не потянуть эти вещи на язык?
Я нахожу, что это сообщение в блоге, на которое ссылается Джеймс Блэк, действительно имеет к этому хороший смысл.
Не так давно я размышлял о своих тестирование привычек за последние десять лет, и я сделал пару интересных наблюдения:
- Я чувствую необходимость писать тесты для кода, который я пишу очень часто.
- Так же часто, эта проблема мешает экологическим ограничениям, поэтому я заканчиваю не записывая эти тесты.
Согласны ли вы с утверждением, что языки динамического программирования облегчают письменные тесты?