当前位置: 首页 > 科技观察

编写干净Python代码的10个技巧,开发者不容错过!

时间:2023-03-20 23:27:35 科技观察

作者|AlexOmeyer  翻译|翟克  Reviser丨NoePython的风格优雅干净,但语法干净不代表代码干净。开发人员仍然需要学习Python最佳实践和设计模式。什么是干净的代码?C++的发明者BjarneStroustrup有一句话清楚地解释了干净代码的含义:“我喜欢我的代码优雅和高效。逻辑应该简单明了,这样错误就很难隐藏;依赖性应该最小,这样它易于维护;错误处理应该完整并符合明确的策略;性能应该接近最佳,这样人们就不会试图用无原则的优化来混淆代码。干净的代码可以很好地做到这一点。”从这句话中,我们可以挑出一些干净代码的品质:干净代码是专注的。每个函数、类或模块都应该做一件事,并且把它做好。干净代码易于阅读和推理。根据GradyBooch的说法,?的作者:干净的代码读起来就像写得很好的散文。干净的代码很容易调试。干净的代码很容易维护。也就是说,它可以很容易地被其他开发人员阅读和优化。干净的代码具有高性能。A开发人员可以随心所欲地编写代码,因为没有固定或有约束力的规则要求他/她编写干净的代码。糟糕的代码会造成技术债务,这对公司造成严重后果。在本文中,我们将采取看看一些帮助我们在Python中编写干净代码的设计模式。让我们在下面了解它们。编写干净Python代码的方法命名约定:命名约定是编写干净代码最有用和最重要的方面之一。函数、类等,使用意义显示原理图的完整名称。这意味着我们倾向于使用长的、描述性的名称,而不是简短、神秘的名称。以下是一些示例:1.使用易于阅读的长描述性名称。这样会省去写不必要的注释,如下:#不推荐#au变量为活跃用户数au=105#推荐total_active_users=1052,使用描述性内容名称。其他开发人员应该能够从名称中找出您的变量存储的内容。简而言之,您的代码应该易于阅读和推理。#不推荐c=[“UK”,“USA”,“UAE”]forxinc:print(x)#Recommendedcities=[“UK”,“USA”,“UAE”]forcityincities:print(城市)3.避免使用含糊不清的缩写。变量应该有一个长的、描述性的名字,而不是一个容易混淆的短名字。#不推荐fn='John'Ln='Doe'cre_tmstp=1621535852#推荐first_name='John'Las_name='Doe'creation_timestamp=16215358524,始终使用相同的词汇表。与您的命名约定保持一致。当其他开发人员处理您的代码时,保持一致的命名约定对于消除混淆非常重要。这适用于命名变量、文件、方法甚至目录结构。#不推荐client_first_name='John'customer_last_name='Doe;#Recommendedclient_first_name='John'client_last_name='Doe'另外,考虑这个例子:#Notrecommendeddeffetch_clients(response,variable):#Processingpassdeffetch_posts(res,var):#Handlepass#Recommendeddeffetch_clients(response,variable):#Handlepassdeffetch_posts(response,variable):#Handlepass5,开始在你的编辑器中跟踪代码库问题。让工程师轻松跟踪和查看代码本身的问题是保持Python代码库清洁的主要方法。允许工程师在编辑器中跟踪代码库问题允许工程师:充分了解技术债务查看每个代码库问题的上下文减少上下文切换不断解决技术债务问题您可以使用各种工具来跟踪您的技术债务,但最重要的是最快和最简单的方法是使用VSCode或JetBrains的免费Stepsize扩展,它可以与Jira、Linear、Asana和其他项目管理工具集成。6.不要使用魔法点。魔法值是具有特殊的、硬编码的语义的数字,出现在代码中没有任何解释。所以我们把这些数字作为文字放在我们代码的多个地方。importrandom#不推荐defroll_dice():returnrandom.randint(0,4)#4应该代表什么?#RecommendedDICE_SIDES=4defroll_dice():returnrandom.randint(0,DICE_SIDES)function:7.保持一致的函数命名规则。正如您在上面的变量中看到的那样,在命名函数时坚持命名约定。使用不同的命名约定会使其他开发人员感到困惑。#不推荐defget_users():#处理Passdeffetch_user(id):#处理Passdefget_posts():#处理Passdeffetch_post(id):#处理pass#推荐deffetch_users():#处理Passdeffetch_user(id):#HandlePassdeffetch_posts():#HandlePassdeffetch_post(id):#Handlepass8,函数应该只做一件事,而且要做好。编写执行单个任务的简短函数。请注意,如果您的函数名称包含“and”,您可能需要将其拆分为两个函数。#不推荐deffetch_and_display_users():users=[]#users:print(user)#部分api调用结果返回users:print(user)#推荐deffetch_usersl():users=[]#部分api调用结果返回usersdefdisplay_users(users):foruserinusers:print(user)9.不要使用布尔值。布尔值(真或假)。每个结果都应作为单独的函数调用,而不是作为函数的输入参数。Class:10.不要添加多余的描述。使用类时,不要给变量名添加不必要的前缀。#DeprecatedclassPerson:def__init__(self,person_username,person_email,person_phone,person_address):self.person_username=person_usernameself.person_email=person_emailself.person_phone=person_phoneself.person_address=person_address#推荐的class__init__(username,email,phone,address):self.username=usernameself.email=emailself.phone=phoneself.address=address在上面的例子中,由于我们已经在Person类内部,所以不需要在变量中添加person_前缀班上。奖励:模块化你的代码为了让你的代码有条理和可维护,将你的逻辑分成不同的文件或类,我们称之为模块。Python中的模块是一个扩展名为.py的文件。每个模块都应该专注于做一件事,并且把它做好。您可以遵循面向对象的OOP原则,例如遵循基本的OOP原则,例如封装、抽象、继承和多态性。结束语编写整洁的代码有很多好处,例如:提高软件质量、增强代码可维护性、消除技术债务等。而且这些改进编写整洁代码的方法也适用于其他语言。希望通过阅读本文,您对整洁代码有了足够的了解,并掌握了一些编写整洁代码的方法。原文链接:https://dzone.com/articles/10-must-know-patterns-for-writing-clean-code-with-1译者介绍翟可,社区编辑,目前从事软件研究在杭州发展。通过电子商务、征信等系统,享受分享知识的过程,丰富自己的生活。