В зависимости от того, будут ли нижние функции в цепочке вызываться сами по себе, во многом повлияет на ваше решение. Если у вас жестко многоуровневая система с определенными классами, вызываемыми только другими классами вашей программы, эти внутренние классы могут намного легче проверять данные и «доверять» данным.
Из "Код завершен 2" Стива Макконнелла:
"Один из способов забаррикадировать в целях защитного программирования - назначить определенные интерфейсы в качестве границ« безопасных »областей. Проверяйте достоверность данных, пересекающих границы безопасной области, и разумно реагируйте, если данные недействительны.
Тот же подход можно использовать на уровне класса. Публичные методы класса предполагают, что данные небезопасны ... Как только данные будут приняты открытыми методами класса, приватные методы класса могут предположить, что данные безопасны. "