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