django 如何在Python生产源代码中使用assert? 您所在的位置:网站首页 asserted状态 django 如何在Python生产源代码中使用assert?

django 如何在Python生产源代码中使用assert?

2023-04-23 08:04| 来源: 网络整理| 查看: 265

我以前在写Django代码的时候使用过assert。以下是我的建议:1.尽量让每个assert都无法访问。如果你有一个assert,并且在非程序员操作你的产品时,这个assert可能会失败,那么这就是一个bug。(即使用户试图做的事情 * 应该 * 是一个错误,它也不应该是一个assert。)assert可以防止不希望的行为,并且比没有错误处理要好。即使如此,它也不应该是assert。如果您有一个可访问的assert,那么您应该用错误处理来替换它,从而引发更具体的错误,或者以某种方式防止assert被访问。Assert错误不应该意味着“出错了”,Assert错误应该意味着“出错了,以程序员没有预料到的方式”。(One此规则的例外:如果你是为程序员创建的东西,比如一个库,那么拥有一个可以被你的库的用户访问的Assert是很好的。程序员应该能够读取Assert。但是要注意规则#3。)1.不要使用assert来验证用户输入。这福尔斯了之前的规则。假设您希望阻止用户在其用户名中使用空格。不要写

assert " " not in username, "No spaces in username"

相反,编写引发特定异常的代码:

if " " in username: raise ValidationError(_("No spaces in username"), code="no-space-username")

Django和Django Rest Framework都有将异常Map到特定HTTP状态码的方法。1.捕获的Assert是一种代码气味。如果你曾经想写...

try: ... except AssertionError: ...

...这是一个不应该使用assert的信号。你应该提出一些更具体的异常并捕获它,这样你就不会捕获一个你不想要的Assert。1.寻找应该是Assert的注解。如果你曾经试图写一个注解,大意是“x在这一点上不能为零”,请考虑写一个Assert。这比注解要好,因为在重构代码之后,注解可能会过时。如果Assert的假设不再成立,你会立即注意到,因为它会创建一个错误。1.失败的Assert应该被记录。Django自带日志功能,允许你记录异常,并在每次发生时给你发送一封电子邮件。Documentation。你应该使用这个,或者其他一些错误报告服务。(我使用Sentry来做这个。)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有