Я использую функции вместо классов, и я обнаружил, что не могу сказать, когда другая функция, на которую он опирается, - это зависимость, которая должна быть подвергнута индивидуальной проверке или внутренней детали реализации, которая не должна. Как вы можете определить, что это такое?
Небольшой контекст: я пишу очень простой интерпретатор Lisp, который имеет функцию eval()
. У него будет много обязанностей, слишком много на самом деле, таких как оценка символов по-разному, чем списки (все остальное оценивает для себя). При оценке символов он имеет свой собственный сложный рабочий процесс (поиск по окружению), а при оценке списков он еще более усложняется, поскольку список может быть макросом, функцией или специальной формой, каждый из которых имеет свой собственный сложный рабочий процесс и набор обязанностей.
Я не могу сказать, должны ли мои функции eval_symbol()
и eval_list()
рассматриваться как внутренние детали реализации eval()
, которые должны быть протестированы с помощью собственных модульных тестов eval()
или подлинными зависимостями, которые должны быть без модульного тестирования независимо от eval()
.