自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

10 個編寫干凈Python代碼的技巧,開發(fā)者不能錯過!

譯文 精選
開發(fā) 開發(fā)工具
學習Python最佳實踐和設(shè)計模式

  作者 | Alex Omeyer

  譯者 | 翟珂

  審校丨Noe

Python的風格優(yōu)雅干凈,但語法干凈并不等同于編寫的代碼也是干凈的。開發(fā)人員仍然需要學習Python最佳實踐和設(shè)計模式。

什么是干凈的代碼?

C++的發(fā)明者Bjarne Stroustrup說過一句話清楚地解釋了干凈代碼的含義:“我喜歡我的代碼是優(yōu)雅和高效的。邏輯應該是直截了當?shù)?,這樣就很難隱藏錯誤;依賴關(guān)系應該是最小的,這樣便于維護;錯誤處理應該是完整的,符合明確的策略;性能應該是接近最佳的,這樣就不會誘使人們用無原則的優(yōu)化使代碼變得混亂。干凈的代碼能做好這件事?!?/p>

 從這句話中,我們可以挑選出干凈代碼的一些品質(zhì):

  • 干凈的代碼是有重點的。每個函數(shù)、類或模塊都應該做一件事,而且要做得好。
  • 干凈的代碼容易閱讀和推理。根據(jù)《面向?qū)ο蟮姆治龊驮O(shè)計與應用》一書的作者Grady Booch的說法:干凈的代碼讀起來就像寫好的散文。
  • 干凈的代碼很容易調(diào)試。
  • 干凈的代碼易于維護。也就是說,其他開發(fā)人員可以輕松閱讀和優(yōu)化它。
  • 干凈的代碼具有高性能。

開發(fā)人員可以隨心所欲地編寫他們的代碼,因為沒有固定的或約束性的規(guī)則來要求他/她編寫干凈的代碼。而糟糕的代碼會產(chǎn)生技術(shù)債務,從而對公司造成嚴重后果。

在本文中,我們將看看一些幫助我們在Python中編寫干凈代碼的設(shè)計模式。讓我們在下文中了解它們。

編寫干凈Python代碼的手段

命名規(guī)則:

命名規(guī)則是編寫干凈代碼的最有用和最重要的方面之一。在給變量、函數(shù)、類等命名時,要使用有意義的、能揭示意圖的名字。而這意味著我們會傾向于使用長的描述性名稱,而不是短的模糊不清的名稱。

下面是一些例子:

1、使用易于閱讀的長描述性名稱。這將省去寫不必要的注釋,如下所示:

# 不推薦
# au變量是活躍用戶數(shù)
au = 105

# 推薦
total_active_users = 105

2、使用描述內(nèi)容名稱。其他開發(fā)人員應該能夠從名稱中找出你的變量存儲的內(nèi)容。簡而言之,你的代碼應該易于閱讀和推理。

# 不推薦
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、始終使用相同的詞匯。與你的命名規(guī)則保持一致。當其他開發(fā)人員處理你的代碼時,保持一致的命名規(guī)則對于消除混淆非常重要。這適用于命名變量、文件、方法甚至目錄結(jié)構(gòu)。

# 不推薦
client_first_name = ‘John’
customer_last_name = ‘Doe;

# 推薦
client_first_name = ‘John’
client_last_name = ‘Doe’

Also, consider this example:
#不推薦
def fetch_clients(response, variable):
# 處理
pass

def fetch_posts(res, var):
# 處理
pass

# 推薦
def fetch_clients(response, variable):
# 處理
pass

def fetch_posts(response, variable):
# 處理
pass

5、在你的編輯器中開始跟蹤代碼庫的問題。

讓工程師可以輕松地跟蹤和查看代碼本身的問題是保持Python代碼庫清潔的一個主要手段。允許工程師在編輯器中跟蹤代碼庫問題可以讓工程師們:

  • 全面了解技術(shù)債務
  • 查看每個代碼庫問題的上下文
  • 減少上下文切換
  • 不斷解決技術(shù)債務問題

你可以使用各種工具來跟蹤你的技術(shù)債務,但最快速和最簡單的方法是使用VSCode或JetBrains的免費Stepsize擴展,它可以與Jira、Linear、Asana和其他項目管理工具集成。

6、不要使用魔法值。魔法值是具有特殊的、硬編碼語義的數(shù)字,它出現(xiàn)在代碼中但沒有任何解釋。所以我們將這些數(shù)字以文字形式出現(xiàn)在我們代碼中的多個位置。

import random

# 不推薦
def roll_dice():
return random.randint(0, 4) # 4應該代表什么?

# 推薦
DICE_SIDES = 4

def roll_dice():
return random.randint(0, DICE_SIDES)

函數(shù):

7、保持一致的函數(shù)命名規(guī)則。

正如上面的變量所見,在命名函數(shù)時要堅持一個命名習慣。使用不同的命名習慣會使其他開發(fā)者感到困惑。

# 不推薦
def get_users():
# 處理
Pass

def fetch_user(id):
# 處理
Pass

def get_posts():
# 處理
Pass

def fetch_post(id):
# 處理
pass

# 推薦
def fetch_users():
# 處理
Pass

def fetch_user(id):
# 處理
Pass

def fetch_posts():
# 處理
Pass

def fetch_post(id):
# 處理
pass

8、函數(shù)應該只做一件事,而且要做得好。寫短而簡單的函數(shù),執(zhí)行單一的任務。需要注意的是,如果你的函數(shù)名稱包含“and”,你可能需要把它拆分成兩個函數(shù)。

# 不推薦
def fetch_and_display_users():
users = [] # 一些 api 調(diào)用的結(jié)果

for user in users:
print(user)


# 推薦
def fetch_usersl():
users = [] # 一些 api 調(diào)用的結(jié)果
return users

def display_users(users):
for user in users:
print(user)

9、不要使用布爾值。布爾值(真或假)。每種結(jié)果應該作為一個單獨的函數(shù)去調(diào)用,而不是當作函數(shù)的入?yún)ⅰ?/p>

類:

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

在上面的例子中,由于我們已經(jīng)在Person類里面了,所以沒有必要在每個類的變量上添加person_前綴。

獎勵:模塊化你的代碼

為了保持你的代碼的條理性和可維護性,把你的邏輯分成不同的文件或類,我們稱之為模塊。Python中的模塊是一個以.py為擴展名的文件。每個模塊都應該專注于做一件事,并且把它做好。

你可以遵循面向?qū)ο蟮腛OP原則,例如遵循基本的OOP原則,如封裝、抽象、繼承和多態(tài)。

結(jié)論

編寫干凈的代碼有很多優(yōu)點,如:提高軟件質(zhì)量、增強代碼可維護性和消除技術(shù)債務等。而這些提高編寫干凈代碼的手段同時也適用于其他語言,我希望通過閱讀這篇文章,你已經(jīng)對干凈代碼和編寫干凈代碼的一些手段有了足夠的了解。

原文鏈接:https://dzone.com/articles/10-must-know-patterns-for-writing-clean-code-with-1

譯者介紹

翟珂,51CTO社區(qū)編輯,目前在杭州從事軟件研發(fā)工作,做過電商、征信等方面的系統(tǒng),享受分享知識的過程,充實自己的生活。

責任編輯:張潔 來源: 51CTO技術(shù)棧
相關(guān)推薦

2020-05-27 10:38:16

開發(fā)代碼技巧

2017-09-14 12:45:35

2023-03-27 15:05:10

Python技巧

2020-07-15 14:51:39

代碼C+開發(fā)

2015-10-21 13:42:54

iOS開發(fā)watch OS2

2025-02-12 08:04:54

代碼Ordersetter

2014-07-29 13:55:10

程序員代碼

2011-03-30 08:49:34

WebjQuery

2015-09-22 13:25:46

Web開發(fā)者HTML5工具

2020-06-15 10:29:10

JavaScript開發(fā) 技巧

2014-08-20 10:02:54

GitGit能力

2014-07-10 10:15:41

代碼代碼庫

2016-12-01 08:36:18

編程云環(huán)境云戰(zhàn)略

2020-03-05 12:12:54

數(shù)據(jù)Python開發(fā)

2015-11-04 11:17:10

移動開發(fā)圖片格式

2017-02-10 12:02:39

Node開發(fā)者

2024-06-24 10:31:46

2011-09-06 15:16:42

PHP

2022-06-07 09:30:35

JavaScript變量名參數(shù)

2015-08-11 11:01:22

設(shè)計原則開發(fā)者
點贊
收藏

51CTO技術(shù)棧公眾號