Многое будет зависеть от того, насколько публична ваша функция и насколько деструктивный ввод будет плохим для вашего приложения / хранилища данных.
Если существует тесная связь между кодом, вызывающим функцию, и самой функциейЯ думаю, что проверка является излишним и только усложнит ваше решение.
Однако, если ваш код, например, является частью библиотеки, используемой не только вами / вашим кодом, добавьте столько проверки, сколько необходимо.Вы не хотите, чтобы это был ваш код, который дает сбой / допускает что-то неправильное, потому что вы не проверили ввод.
Подумайте о библиотеках / функциях, которые вы уже используете.Если вы бросаете на них плохие ценности, как они реагируют?Они отвечают специальной ошибкой (например, «Слон» не является фруктом) или внутренней ошибкой, которая является побочным продуктом вашего неверного ввода (например, «Ссылка на объект не установлена на экземпляр объекта»)?