成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

  作者 | Alex Omeyer

  譯者 | 翟珂

  審校丨Noe

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

什么是干凈的代碼?

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

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

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

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

在本文中,我們將看看一些幫助我們?cè)赑ython中編寫干凈代碼的設(shè)計(jì)模式。讓我們?cè)谙挛闹辛私馑鼈儭?/p>

編寫干凈Python代碼的手段

命名規(guī)則:

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

下面是一些例子:

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

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

# 推薦
total_active_users = 105

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

# 不推薦
c = [“UK”, “USA”, “UAE”]

for x in c:
print(x)

# 推薦
cities = [“UK”, “USA”, “UAE”]
for city in cities:
print(city)

3、避免使用模棱兩可的簡稱。變量應(yīng)該有一個(gè)長的描述性名稱,而不是一個(gè)容易混淆的簡稱。

# 不推薦
fn = 'John'
Ln = ‘Doe’
cre_tmstp = 1621535852

# 推薦
first_name = ‘John’
Las_name = ‘Doe’
creation_timestamp = 1621535852

4、始終使用相同的詞匯。與你的命名規(guī)則保持一致。當(dāng)其他開發(fā)人員處理你的代碼時(shí),保持一致的命名規(guī)則對(duì)于消除混淆非常重要。這適用于命名變量、文件、方法甚至目錄結(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代碼庫清潔的一個(gè)主要手段。允許工程師在編輯器中跟蹤代碼庫問題可以讓工程師們:

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

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

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

import random

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

# 推薦
DICE_SIDES = 4

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

函數(shù):

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

正如上面的變量所見,在命名函數(shù)時(shí)要堅(jiān)持一個(gè)命名習(xí)慣。使用不同的命名習(xí)慣會(huì)使其他開發(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ù)應(yīng)該只做一件事,而且要做得好。寫短而簡單的函數(shù),執(zhí)行單一的任務(wù)。需要注意的是,如果你的函數(shù)名稱包含“and”,你可能需要把它拆分成兩個(gè)函數(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é)果應(yīng)該作為一個(gè)單獨(dú)的函數(shù)去調(diào)用,而不是當(dāng)作函數(shù)的入?yún)ⅰ?/p>

類:

10. 不要添加多余的描述。在使用類時(shí),變量名不要添加不必要的前綴。

# 不推薦
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類里面了,所以沒有必要在每個(gè)類的變量上添加person_前綴。

獎(jiǎng)勵(lì):模塊化你的代碼

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

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

結(jié)論

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

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

譯者介紹

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

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

2017-09-14 12:45:35

2020-05-27 10:38:16

開發(fā)代碼技巧

2023-03-27 15:05:10

Python技巧

2015-10-21 13:42:54

iOS開發(fā)watch OS2

2025-02-12 08:04:54

代碼Ordersetter

2020-07-15 14:51:39

代碼C+開發(fā)

2011-03-30 08:49:34

WebjQuery

2014-07-29 13:55:10

程序員代碼

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)略

2015-11-04 11:17:10

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

2020-03-05 12:12:54

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

2017-02-10 12:02:39

Node開發(fā)者

2015-08-11 11:01:22

設(shè)計(jì)原則開發(fā)者

2011-09-06 15:16:42

PHP

2020-03-31 09:47:04

Vue開發(fā)代碼

2011-11-17 14:17:09

IDE
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩欧美在线一区二区 | 男人的天堂一级片 | 色婷婷激情综合 | 日本一区二区三区免费观看 | 亚洲黄色片免费观看 | eeuss国产一区二区三区四区 | 一区二区三区中文字幕 | 国产激情一区二区三区 | www国产成人免费观看视频,深夜成人网 | 国产一区91精品张津瑜 | 在线日韩不卡 | 女同久久另类99精品国产 | 日韩av一区二区在线观看 | 久久av网站| 欲色av| 欧美日韩综合视频 | 久久精品亚洲 | 97人澡人人添人人爽欧美 | 亚洲人a| 精品国产欧美一区二区 | 九九热在线精品视频 | 欧美久久一区 | 国产精品久久久久久亚洲调教 | 91在线电影 | 在线播放中文字幕 | 欧美a区 | 日韩欧美在线视频观看 | 91精品国产综合久久小仙女图片 | 日本中文字幕一区 | 91精品国产综合久久婷婷香蕉 | 亚洲国产免费 | 国产激情一区二区三区 | 久久久久久久久一区 | 黄色大片免费观看 | 久草影视在线 | 国产真实乱全部视频 | 色婷婷综合久久久中文字幕 | 成人欧美一区二区三区色青冈 | 毛片a级毛片免费播放100 | 在线一区| 成人午夜精品一区二区三区 |