使用Python编写干净代码的10个必备模式

原始地址:https://dev.to/alexomeyer/10-must-know-patterns-for-writing-clean-code-with-python-56bf

Python是其中一种最优雅和整洁的编程语言,但优美和整洁的语法与编写整洁的代码不同。

开发者仍然需要学习Python的最佳实践和设计模式来编写整洁的代码。
什么是整洁的代码?🛁✨
C++编程语言的发明者Bjarne Stroustrup清晰地解释了什么是整洁的代码:
“我喜欢我的代码既优雅又高效。逻辑应该是直观的,使错误不易隐藏,依赖关系应该最小以便于维护,错误处理应根据明确的策略进行完整处理,性能应接近最优,以免引诱人们通过不合规的优化使代码变得混乱。整洁的代码只做一件事。”
从上述引文中,我们可以提取出整洁代码的几个特点:
1. 整洁的代码专注。 每个函数、类或模块应该只做一件事,而做好这件事。
2. 整洁的代码易于阅读和理解。根据Grady Booch所说:整洁的代码读起来就像是精心编写的散文。
3. 整洁的代码易于调试。
4. 整洁的代码易于维护。 即可以方便地由其他开发者阅读和改进。
5. 整洁的代码具有高性能。
好吧,开发者可以按照他们的意愿编写代码,因为没有固定或强制的规则来强制他们编写整洁的代码。然而,糟糕的代码可能会导致技术债务,对公司造成严重后果。因此,这是编写整洁代码的一个警告。
在本文中,我们将探讨一些帮助我们使用Python编写整洁代码的设计模式。让我们在下一节学习这些设计模式。

用于使用Python编写整洁代码的设计模式

命名约定:

命名约定是编写整洁代码中最有用和重要的方面之一。在命名变量、函数、类等时,使用意义明确的有意义的名称。这意味着我们更倾向于使用具有描述性的长名称,而不是使用含糊不清的短名称。
以下是一些示例:
1. 使用易于阅读的长描述性名称。 这样将消除不必要的注释,如下所示:
#不推荐
#au变量是活跃用户的数量
au = 105
#推荐
total_active_users = 105
2. 使用描述性的透露意图的名称。 其他开发者应该能够根据名称推断出变量存储的内容。简而言之,你的代码应该易于阅读和理解。
#不推荐
c = [“UK”,“USA”,“UAE”]
for x in c:
print(x)
#推荐
cities = [“UK”,“USA”,“UAE”]
for city in cities:
print(city)
3. 避免使用含糊不清的缩写。 变量的名称应该更倾向于长描述性的名称,而不是短混淆的名称。
#不推荐
fn = ‘John’
Ln = ‘Doe’
cre_tmstp = 1621535852
#推荐
first_name = ‘John’
Las_name = ‘Doe’
creation_timestamp = 1621535852
4. 始终使用相同的词汇表。 在命名约定中保持一致性很重要。
保持一致的命名约定有助于消除其他开发者在处理您的代码时的混淆。这适用于命名变量、文件、函数甚至目录结构。
#不推荐
client_first_name = ‘John’
customer_last_name = ‘Doe;
#推荐
client_first_name = ‘John’
client_last_name = ‘Doe’
另外,考虑以下示例:
#bad code
def fetch_clients(response, variable):

do something

pass
def fetch_posts(res, var):

do something

pass

推荐

def fetch_clients(response, variable):

do something

pass
def fetch_posts(response, variable):

do something

pass
5. 在编辑器中开始跟踪代码库问题。
保持Python代码库整洁的一个主要组成部分是使工程师能够跟踪和查看代码本身中的问题。在编辑器中跟踪代码库问题允许工程师:

  • 对技术债务有全面的可见性
  • 查看每个代码库问题的上下文
  • 减少上下文切换
  • 持续解决技术债务
    您可以使用各种工具来跟踪技术债务,但最快、最简单的入门方式是使用与Jira、Linear、Asana和其他项目管理工具集成的VSCode、Visual Studio或JetBrains的免费Stepsize扩展程序。
    6. 不要使用神奇数字。 神奇数字是具有特殊的硬编码语义出现在代码中但没有任何含义或解释的数字。通常,这些数字作为文字在代码中的多个位置出现。
    import random
    #不推荐
    def roll_dice():
    return random.randint(0, 4) # 4代表什么?
    #推荐
    DICE_SIDES = 4
    def roll_dice():
    return random.randint(0, DICE_SIDES)

函数

7. 在函数命名约定上保持一致。
如上所述,当命名函数时,遵循命名约定。使用不同的命名约定会使其他开发者困惑。
#不推荐
def get_users():

do something

Pass
def fetch_user(id):

do something

Pass
def get_posts():

do something

Pass
def fetch_post(id):

do something

pass
#推荐
def fetch_users():

do something

Pass
def fetch_user(id):

do something

Pass
def fetch_posts():

do something

Pass
def fetch_post(id):

do something

pass
8. 函数应该只做一件事情并做好。 编写简短简单的函数,执行单一任务。请注意一个经验法则,如果函数名包含“and”,可能需要将其拆分为两个函数。
#不推荐
def fetch_and_display_users():
users = [] # 来自某个API调用的结果
for user in users:
print(user)
#推荐
def fetch_usersl():
users = [] # 来自某个API调用的结果
return users
def display_users(users):
for user in users:
print(user)
9. 不要使用标志或布尔标志。 布尔标志是保存布尔值(true或false)的变量。这些标志被传递给函数,并由函数用于确定其行为。
text = “Python is a simple and elegant programming language.”
#不推荐
def transform_text(text, uppercase):
if uppercase:
return text.upper()
else:
return text.lower()
uppercase_text = transform_text(text, True)
lowercase_text = transform_text(text, False)
#推荐
def transform_to_uppercase(text):
return text.upper()
def transform_to_lowercase(text):
return text.lower()
uppercase_text = transform_to_uppercase(text)
lowercase_text = transform_to_lowercase(text)

类:

10. 不要添加冗余上下文。 这可能是在使用类时向变量名添加不必要的变量。
#不推荐
class Person:
def init(self, person_username, person_email, person_phone, person_address):
self.person_username = person_username
self.person_email = person_email
self.person_phone = person_phone
self.person_address = person_address
#推荐
class Person:
def init(self, username, email, phone, address):
self.username = username
self.email = email
self.phone = phone
self.address = address
在上面的示例中,由于我们已经在Person类内部,因此不需要在每个类变量的名称之前添加person_前缀。
奖励: 将代码模块化:
为了使您的代码组织有序且可维护,将逻辑拆分为不同的文件或称为模块的类。在Python中,模块只是以 .py 扩展名结尾的文件。每个模块应专注于做一件事并且做好它。
您可以遵循面向对象编程(OOP)原则,如封装、抽象、继承和多态。

结论

编写整洁的代码带来许多优点:提高软件质量,代码可维护性和消除技术债务。
在本文中,您学习了关于整洁代码的概念以及使用Python编程语言编写整洁代码的一些模式。然而,这些模式也可以在其他编程语言中复制。
最后,我希望通过阅读本文,您已经了解了关于整洁代码和编写整洁代码的一些有用模式。
这篇文章由全栈JavaScript开发人员、Linux爱好者、热衷于教学和技术写作的Lawrence Eagles为Managing technical debt博客撰写。Lawrence具有创造力和简约的强大结合。当他不编码或写作时,他喜欢看篮球✌️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值