Я НИКОГДА не использую утверждение в своем коде, я ненавижу их со страстью. Я понимаю необходимость проверки и обработки ошибок, но для предотвращения ошибки, которая приведет к сбою вашей программы, сбой самой программы ... откровенно говоря, я не вижу преимущества.
Также оставляйте одно утверждение в своем коде, и закон murphy гарантирует, что он в конечном итоге разрушит вашу программу. Я предпочитаю проверять данные до того, как буду обрабатывать их, и выброшу соответствующее исключение, поэтому оно обрабатывается так же, как и любые другие исключительные состояния или операции. Это на мой взгляд дает программное обеспечение, которое было намного более стабильным в долгосрочной перспективе с детерминированным поведением с точки зрения пользователя.
Вы, как инженер-программист, будете знать, что делать, когда ваша программа утверждает, что большинство пользователей просто испугаются, что они что-то сломали, и не смогут использовать ваше программное обеспечение. Поэтому, если вы не разрабатываете для инженеров (что вполне возможно) и даже тогда ...
С точки зрения удобства использования, ужасы, даже если они не «предполагаются», случаются, мы все знаем, что в конечном итоге это произойдет. ..
Ok ... из всех комментариев и огня в я получаю здесь, я думаю, что нужно более подробно объяснить свою точку зрения, потому что он явно не понял.
Я не сказал, что не проверял исключения, странные значения или просто неправильные состояния, я просто сказал, что не использовал утверждения из-за ужасного способа, которым они располагают, чтобы закрыть систему с точки зрения конечного пользователя. Кроме того, большинство современных языков предоставляют другой, безопасный для типа способ справиться с этими ситуациями, сыворотка, тогда я бы использовал assert, когда совершенно хорошее исключение сделало бы трюк, и это тоже было бы неплохо.
В большинстве производственных кодексов, которые я видел там, я заметил, что в основном два способа справиться с этим, смазывание на всем протяжении кода, а затем оставить хороший кусок в производстве. У этого есть яростная тенденция просто закрыть приложение для пользователя, я еще не вижу Assert изящно сбой системы ... он просто терпит неудачу ... бум ... ушел ... конечный пользователь просто сказал: «WTF это ошибка с ошибкой утверждения по адресу 0x330291ff !!! "
Другой путь, еще хуже, если вы спросите меня, были просто поймать все, что было брошено и спрятать его под ковром (никогда не видел этот ужасный примерочных поймать с пустыми скобками !!)
НИ WAY будет работать чтобы получить хорошую стабильную систему. Конечно, вы можете использовать утверждения в своем бета-коде и удалить их все в своем производственном коде ... но почему, черт возьми, вы бы удалили свои сети безопасности, потому что это производство. Я был бы очень удивлен, что все эти проверки могут подорвать работу вашей системы.
Создайте себе хорошую схему обработки исключений и ... богом ... ОСТАВЛЯЙТЕ ЭТО, вы получите гораздо более значимую информацию о нашей системе и, если это будет сделано всегда всегда в контексте, чем наличие каких-то глубоких бросков в библиотеке, потому что что-то пропал, отсутствует.
Это особенно актуально при создании библиотек ..., чтобы думать, что вы, создатель библиотеки, можете решить, когда нужно сбивать всю систему, потому что что-то пошло не так в данных, которые были брошены на вас, невероятно эгоистично и узко склонный. Позвольте пользователю вашей библиотеки решить, что достаточно важно, чтобы оно требовало аварийного сбоя.
так нет ... Я не использую утверждает ... Я использую исключение
И да ... обычно код, который терпит неудачу в производстве редко мое имя на вершине.
Похоже, вы знаете, почему, вы просто не согласны. Это нормально :) –
У вас никогда не было этой идеи, и все же вы никогда их не удаляете? Похоже, вы согласны и не согласны в одно и то же время. – ralphtheninja
Утверждения используются только ленивыми программистами, которые не хотят кодировать обработку ошибок. Если вы знаете, что ошибка возможна, обработайте ее. Если это невозможно, то нет оснований утверждать. – Justin