作为工程师,我们应该始终努力编写简单的代码。
一个常见的陷阱是许多编程语言典型的,不仅对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
关于我
嗨,我是AWS社区构建器(无服务器焦点),云系统架构师和位于以色列的公共演讲者。
我认为自己是一个热情的无服务器倡导者,热爱创新,AWS和智能家庭应用程序。