代碼規范有用嗎?聽聽100W年薪谷歌大佬怎么說!

谷歌內部的 python 代碼規范

熟悉 python 一般都會努力遵循 pep8 規范,也會有一些公司制定內部的代碼規范。大公司制定規范的目的不是說你一定要怎樣去使用編程語言,而是讓大家遵守同一套規則,節省其他人閱讀代碼的成本,方便協作和溝通。

對于個人而言,日常編寫代碼只需要保持風格統一,前后一致,就是一個很大的勝利,然后再加入一些實用的規則,在寫代碼的時候有效減少可能引入的 bug。

接下來,我截取了一些谷歌的 python 代碼規范中一些有意思的要點,希望日后能更深刻的感受到它們的用處。

1,導入模塊和包,不導入單獨的類、函數或者變量。

這通常能簡化導入過程,方便命名空間管理。但是缺點也很明顯,當名稱較長時,調用函數和類的代碼會很長,影響可讀性。

# yes
from sound.effects import echo
echo.EchoFilter()# no
from sound.effects.echo import EchoFilter
EchoFilter()

如果你想學習自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網第一的自動化測試教程,同時在線人數到達1000人,并且還有筆記可以領取及各路大神技術交流:798478386????

【已更新】B站講的最詳細的Python接口自動化測試實戰教程全集(實戰最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細的Python接口自動化測試實戰教程全集(實戰最新版)共計200條視頻,包括:1、接口自動化之為什么要做接口自動化、2、接口自動化之request全局觀、3、接口自動化之接口實戰等,UP主更多精彩視頻,請關注UP賬號。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click?

2,從根目錄導入,不假定任意的 sys.path,也不使用相對導入。

假設 doctor.who 路徑已經被某種手段添加到了 sys.path,也應該從開始的地方導入。

# yes
from doctor.who import jodie# other than doctor.who is already in sys.path
# no
import jodie

3,謹慎使用異常

使用異常需要注意的細節有:

●? 優先合理的使用內置異常類。比如需要正數的情況下傳遞了一個負數引發的錯誤,拋出 ValueError 類型。

●? 永遠不要使用 except 捕獲所有的異常,這可能會造成一些隱藏 bug 難于發現。你應該使用特定異常類型分開捕獲。

●? 不要使用 assert 指示某些意外情況,應該使用 raise。

●? 不要在 try 和 except 子句中加入太多邏輯,try 塊的體積越大, 期望之外的異常就越容易被觸發。

盡量使用正確的內置異常類型:

def division(a, b):if b == 0:raise ValueError('b can not be zero')

避免全局捕獲異常,指定異常類型:

# yes
try:1 / 0"abc"[100]
except ZeroDivisionError:...
except IndexError:...# no
try:1 / 0"abc"[100]
except:...

4、不要使用可變類型作為函數默認值,如果修改了這個變量,默認值也會跟著發生變化

# yes
def foo(a, b=None):if b is None:b = []
def foo(a, b: Sequence = ()):# no
def foo(a, b=[]):
def foo(a, b=time.time()):
def foo(a, b={}):

5,注意條件表達式的隱式布爾值

●?對于序列(字符串, 列表, 元組), 要注意空序列是 False,在判斷是否為空序列時,使用隱性的 if not seq 判斷,而不用 if len(seq) == 0;

●?判斷數字是否為 0,則使用 number == 0,而不使用用 if not number。因為 number 可能設置的是默認值為 None。

●?判斷是否為 None 使用 x is None,而不用 not x。

# yes
.if not users: # sequence
if number == 0:
if i % 10 == 0:
def f(x=None):if x is None:# no
if len(users) == 0:
if number is not None and not number:
if not i % 10:
def f(x=None):x = x or []

6,謹慎使用裝飾器

裝飾器可以在函數的參數或返回值上執行任何操作,這可能導致讓人驚異的隱藏行為。

而且, 裝飾器在導入時執行,從裝飾器代碼中捕獲錯誤并處理是很困難的。

使用裝飾器一定要編寫單元測試,并且說明它的作用和使用方法。

裝飾器本身不要依賴于任何文件, socket, 數據庫連接。避免使用 @staticmedthod 裝飾器,多數情況下,將方法封裝成模塊級的函數可以達到同樣的效果。

7,建議使用類型聲明,類型聲明的好處非常明顯:

●? 使用類型聲明可以提高代碼的可讀性。

●? 也可以使用類型檢查工具提早發現問題。

●? 使用類型聲明之后,doc string 中就沒有必要對參數類型進行說明。

●? 在編輯器中會根據類型進行代碼提示。

但是在實際操作過程中,類型聲明往往很難維持。當代碼更新完之后,一定要記得更新類型聲明,過時的類型聲明會對閱讀者造成誤導。python 的類型聲明成本學習成本較高。

# yes
name: str = 'yuz'
def func(a: int) -> List[int]:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

紅酒按照糖含量怎么分類?

我們常聽人們形容葡萄酒為干型或甜型,這指的是葡萄酒的含糖量。不含糖就是干型,含糖少就是半干型,含糖多就是甜型,這是葡萄酒分類的一種——按糖量分。云倉酒莊的品牌雷盛紅酒分享一般分為干型、半干型、半甜型、甜型四種。 云倉…

get data from Nacos error,dataId:服務名

2023-11-23 09:44:35.595 ERROR 169 — [ main] c.a.n.client.config.impl.ClientWorker : [fixed-100.66.12.65_8848] [sub-server-error] no right, dataIdcampaign-task-service, groupcampaign, tenant 2023-11-23 09:44:35.598 ERROR 169 — [ main] c.a.c.n.c.NacosPrope…

Jetson orin(Ubuntu20.04)不接顯示器無法輸出VNC圖像解決辦法以及vnc安裝記錄

sudo apt install vino 好像Jetpack 5.0中已經自帶了。。 配置VNC server: gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false 編輯org.gnome,增加一個“enabled key”的參數: cd /usr/share/glib-2…

氮化鎵的晶體學濕式化學蝕刻法

引言 目前,大多數III族氮化物的加工都是通過干法等離子體蝕刻完成的。干法蝕刻有幾個缺點,包括產生離子誘導損傷和難以獲得激光器所需的光滑蝕刻側壁。干法蝕刻產生的側壁典型均方根(rms)粗糙度約為50納米,雖然已經發現KOH基溶液可以蝕刻AlN…

Android:Google三方庫之Firebase集成詳細步驟(三)

Cloud Messaging 1、清單文件配置 a、(可選)一項擴展 FirebaseMessagingService 的服務。除了接收通知外,如果您還希望在后臺應用中進行消息處理,則必須添加此服務。例如,您需要在前臺應用中接收通知、接收數據載荷以及…

服務臺需要跟蹤的3個重要指標MTBF+MTTF+MTTR

衡量標準是IT服務管理的核心,可提供有關運營的見解,并幫助確定需要持續改進的領域。通常的服務臺指標有助于展示內部運營效率。例如,衡量在規定時間內解決問題的工單數量的 SLA 是展示服務臺效率的關鍵因素。另一方面,故障指標可幫…

阿里云服務器(vgn7i-vws) anaconda(py39)+pytorch1.12.0(cu113)

安裝anaconda 2022 10 py3.9 wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh sha256sum Anaconda3-2022.10-Linux-x86_64.sh #校驗數據完整性 chmod ux Anaconda3-2022.10-Linux-x86_64.sh #添加執行權限 bash Anaconda3-2022.10-Linux-x86_…

ate測試原理及ate測試系統(軟件)知識科普 -納米軟件

ATE(Automatic Test Equipment)測試也叫自動化測試,通過計算機控制測試儀器對被測對象進行測試。以計算機編程代替人工測試,基于測試程序控制儀器并對待測品進行輸入和輸出信號檢測分析,從而判斷待測品的性能是否符合要求。 ATE測試需要根據測…

linux進程調度(一)-進程概述

一、什么是進程 進程是指計算機已運行的程序。程序本身只是指令、數據及其組織形式的描述。進程就是一個程序的執行實例,也就是正在執行的程序。在linux操作系統的中,進程就是一個擔當分配系統資源CPU時間、內存的實體。進程控制的主要功能是對系統中的所…

Kafka報錯under-replicated partitions

1 under-replicated partitions異常原因 Kafka報錯under replicated partitions意味著某些分區的副本數量未達到預期的復制因子。 主要有兩種原因, Broker故障 如果某個Kafka Broker發生故障,導致其中一些分區的副本不再可用,那么這些分區就…

2023年微軟開源八個人工智能項目

自2001年軟件巨頭微軟前首席執行官史蒂夫鮑爾默對開源(尤其是Linux)發表尖刻言論以來,微軟正在開源方面取得了長足的進步。繼ChatGPT于去年年底發布了后,微軟的整個2023年,大多數技術都是面向開發人員和研究人員公開發…

Towhee介紹

官方網站:Towhee | Home - Towhee Towhee 是一個尖端框架,旨在通過使用基于大型語言模型 (LLM) 的管道編排來簡化非結構化數據的處理。它具有獨特的優勢,可以從各種非結構化數據類型(包括冗長的文本、圖像…

淺談進程與線程

文章目錄 一. 進程🍎什么是程序?什么是進程?🍋程序的并發性和并行性🍉進程誕生的原因🍑PCB 二. 線程🍥什么是線程?🍦為什么引入線程? 三. 進程與線程的區別與…

HarmonyOS 設備管理開發:USB 服務開發指導

基本概念 USB 服務是應用訪問底層的一種設備抽象概念。開發者根據提供的 USB API,可以獲取設備列表、控制設備訪問權限、以及與連接的設備進行數據傳輸、控制命令傳輸等。 運作機制 USB 服務系統包含 USB API、USB Service、USB HAL。 圖 1 USB 服務運作機制 ●…

【SpringBoot3+Vue3】五【完】【實戰篇】-前端(配合后端)

目錄 一、環境準備 1、創建Vue工程 2、安裝依賴 2.1 安裝項目所需要的vue依賴 2.2 安裝element-plus依賴 2.2.1 安裝 2.2.2 項目導入element-plus 2.3 安裝axios依賴 2.4 安裝sass依賴 3、目錄調整 3.1 刪除部分默認目錄下文件 3.1.1 src/components下自動生成的…

JeecgBoot3.5漏洞升級—快速文檔

近幾年來,黑客攻擊行為呈現出日益復雜和隱蔽的趨勢,對個人和組織的安全造成了嚴重威脅。黑客們不斷尋找新的漏洞和安全漏洞,利用各種手段進行網絡攻擊,包括惡意軟件、網絡釣魚、勒索軟件等。因此,我們每個人都需要關注…

Windows系統下載并安裝 Windows PowerShell

PowerShell下載地址 一 windows7 版本 **若要確定您正在使用的 Microsoft PowerShelll 版本,請在 Windows 7 或 Windows Server 2008R2 或 Windows Server 2012 計算機上執行以下操作: 單擊“開始”,單擊“所有程序”,單擊“附件”,單擊“Windows PowerShell”,然后單擊…

渲染農場渲染一分鐘動畫需要多少錢?需要渲染多少時間?

現在很公司都開始使用渲染農場渲染動畫,但是還是有很多人不知道渲染農場渲染動畫需要多少錢,需要渲染多少時間。在這篇文章中我們將為你一一解答,為你提供一個清晰的參考。 渲染農場的收費通常是按照渲染的使用時間收費,渲染十分…

華大基因助力烏茲別克斯坦精準醫學發展,共筑健康絲綢之路

今年上半年,中國與中亞五國元首齊聚陜西西安,舉辦中國-中亞峰會。過去的20年里,中國已經成為中亞國家的主要投資來源國,總投資額接近400億美元。烏茲別克斯坦是中國-中亞合作機制的重要參與者,烏…

elasticsearch命令大全

1、查詢全部索引 GET /_cat/indices?v2、要按文檔數對所有索引進行降序排序 GET /_cat/indices?v&hindex,docs.count&sdocs.count:descv:參數用于顯示列標題 h:參數用于指定要顯示的列 s:參數用于指定按哪一列進行排序 desc&…