通过这个简单的技巧来减少您的Python代码复杂性
#编程 #python #电脑科学 #optimization

pexels free images

[https://www.ranthebuilder.cloud/](https://www.ranthebuilder.cloud/)

作为工程师,我们应该始终努力编写简单的代码。

一个常见的陷阱是许多编程语言典型的,不仅对python来说,可怕 如果elif误解

如果您想解决此问题并提高代码的可读性和可维护性,请坚持下去,本文适合您!

请求处理程序用例

客户管理系统收到请求。

每个请求包含一个操作和客户名称。操作包括创建新客户,激活客户,暂停客户并删除客户。有四种类型,每种类型的处理方式都不同。

每个请求是Python词典:


这是一个潜在的流程图,可以解决此用例:

和等效的Python代码:

你能发现这个问题吗?有很多IF和Elifs

使代码更加复杂,更易读(太长!),并且更难维护。

另外,为了处理这些动作,该代码有时必须经过几个不会匹配的IF,这是不理想的,因为动作的数量变得更大( o(n)其中n是动作数)。

值得庆幸的是,有一个简单的解决方案!

对IF-ELIF说不!

您可以在下面的代码中看到,if-eLif部分被删除,而有利于将每个操作映射到相应的处理程序函数3, action_mapping


现在,任何动作处理程序都会在第18行中从字典(按 o(1))中选择,并在第20行中调用处理程序。例如,对于一个将选择 操作,将选择 _handle_activate_request

旁注:由于在第13行中验证了输入,因此该动作始终在 action_mapping 字典中找到。

最好的做法是什么?

如果 - 没有邪恶;它们是语言的重要组成部分。

但是,就像生活中的其他一切一样,您都不应该过度。

我的经验法则是,如果eLif就足够了。如果需要更多,请使用字典映射机制。

最后,使用代码复杂性扫描仪工具,例如Radon/Xenon。他们可以查明有问题的区域,并帮助您将代码重构为杰作。

想了解有关无服务器的更多信息吗?

查看我的网站https://www.ranthebuilder.cloud

[https://www.ranthebuilder.cloud/](https://www.ranthebuilder.cloud/)

关于我

嗨,我是AWS社区构建器(无服务器焦点),云系统架构师和位于以色列的公共演讲者。

我认为自己是一个热情的无服务器倡导者,热爱创新,AWS和智能家庭应用程序。