作為一名寫了5年Python的工程師,我發現我們的工具集一直在變小,而不是變大。很多工具都是不必要或無用的,而其中有一些工具你將完全無法使用。
但是,這三個工具集,是我堅持使用了最長時間的。
秘密武器#1:使用Kite可以更快地編寫代碼,減少Google搜索時間
大多數代碼編輯器都具有如下自動完成功能:
它使用語言(有時還有庫)文檔來建議函數名和參數之類的東西。
這當然沒關係,但如果你的編輯器可以瀏覽多年的GitHub數據,並自動完成不僅僅是函數名,而是整行代碼,那就很完美了。
這只是你應該使用Kite的三個理由中的第一個。
原因1:完善代碼行
Kite查看您的代碼庫和變量、常用的在線參數名、文檔,然後提出符合上下文的建議:
上面的例子展示了Kite如何預測哪一個變量你將使用哪一個,哪怕它們是一般命名的(比如b)或者使用通用名稱(比如x或者y)。
我們花了大約50年的時間在Github上對所有代碼進行語義索引,構建統計類型推斷,以及以非常深入的方式使用這些語義信息的豐富統計模型。--Kite創始人兼首席執行官Adam Smith
原因2:Copilot進行文檔編制
如果你從未聽說過“ RTFM”,那可能是因為你還沒有犯過我的錯誤。
無論如何,高級開發人員在發現bug或查看Stack Overflow的問題之前,我們應該要閱讀官方文檔。
Kite Copilot使文檔更容易被讀懂。 它與你的編輯器一起運行,並實時顯示你用光標突出顯示的任何對象/功能/等的文檔。
從我的第一份工作到現在,我真的沒有藉口不首先在文檔中尋找答案。
原因3:在本地運行
它是在本地運行的所有基礎之上,因此你能很快得到令人難以置信的建議,它可以脫機工作,並且你的代碼永遠不會發送到雲中。
對於互聯網較差的人和在封閉源代碼庫中工作的人們來說,這是非常重要的。
結果
我使用 Kite 已有多年了,而且一直在不斷改進。而且該工具在拿到投資後,一直是免費的。
你所要做的就是為你的編輯器下載Kite插件,或者下載Copilot,它可以為你安裝插件。下載鏈接在這裡:https://kite.com/?ref=pbadeer
秘密武器2:使用Mypy穩定你的代碼
Python是動態類型的,一個過分簡化的解釋是你可以隨時將任何變量設為任何數據類型(字符串,整數等)。
<code># 這兩種變量類型的聲明方式完全相同 #Python動態地自行找出數據類型 # string var_name = "string here" # integer var_name = 1234/<code>
相反的是靜態類型的語言,其中的變量必須有一個特定的數據類型,並且始終遵循它。
<code># 許多語言也要求聲明數據類型 # string str var_name = "string here" # integer int var_name = 1234/<code>
動態鍵入的利弊
動態類型的優點是,在編寫時可以很懶,並且可以減少代碼混亂。
但缺點是很多而且很大:
- 通常在開發週期的後期會遇到錯誤
- 由於Python不斷地計算類型,代碼的性能更差
- 函數不太穩定,因為它們的輸入和輸出可以在沒有警告的情況下更改數據類型
- 由於其他人可能不知道您的變量是或可能成為什麼樣的數據類型,因此傳遞代碼的穩定性要高得多
Python中的靜態類型
輸入Mypy。一個免費的Python模塊,允許你在Python內部使用靜態類型。
在 pip install mypy 之後,下面是一個如何使用它的示例:
<code># 使用普通動態類型聲明函數,不使用mypy def iter_primes(): # 此處輸入代碼 # 用mypy靜態類型聲明相同的函數 from typing import Iterator def iter_primes() -> Iterator[int]: # code here/<code>
在mypy示例中,我們指定函數返回整數迭代器。這個簡單的更改通過強制一個一致的輸出使這個函數更加經得起未來的檢驗。
其他開發人員只需查看聲明就可以看到輸出的數據類型,與僅使用文檔不同的是,如果不遵守該聲明,你的代碼將出錯。
這是從這裡的例子中提取的一個超級簡單的例子,如果仍然沒有意義,去看看它們。
案例地址:
http://www.mypy-lang.org/examples.html
秘密武器3:使用Sonarlint快速查找錯誤並編寫更簡單的函數
現在每個編輯器都有某種類型的錯誤檢查或“linter”內置。它查看代碼,通常不運行它,並試圖猜測可能出了什麼問題。這稱為靜態代碼分析。
動態代碼分析實際上試圖運行/編譯部分代碼以查看其是否正常工作,但它是在後臺自動執行的。事實上,它並不猜測,而是知道它是否有效,以及確切的錯誤是什麼。
SonarLint是動態代碼分析的最佳選擇,還有更多。這些特點是我喜歡它的原因:
註釋或未調用的代碼
我犯了把打印語句、註釋掉的代碼和未使用的函數放在我的代碼庫中的錯誤。這會警告我,讓我很難忘記,告訴我它在哪裡,讓它很容易找到。
風險非常小
一個包含不斷更新的安全風險的巨大數據庫實時地拋出到代碼庫中,你所暴露的任何已知漏洞都會發出警告。
風險非常小,不可能記住,所以每個人都應該使用一些東西來跟蹤這些風險。聲納林是一個很好的開始。
從未執行過的代碼
與未調用的代碼稍有不同,這將提示我是否創建了任何結果無法達到的計算。這些在寫代碼的過程中是很難發現,可能導致需要數小時的調試,所以這是我最喜歡的功能之一。
下面是一個例子:
<code>a = None if a == None or not a or a: this_will_always_get_called() else: # sonarlint會警告您此行永遠不會執行 this_will_never_get_called()/<code>
認知複雜性
簡單的解釋是,他們已經創建了一個數學公式,可以計算出閱讀/理解代碼的難度。
它不僅非常有用,而且很容易理解。每次SonarLint要求我“降低認知複雜度”時,都會附帶一個簡單的規則解釋,比如“嵌套的if語句太多”。
結果
我發現這比基本的阻塞和 linting 實踐更有用,而且我確信這會使我編寫更人性化的代碼。順便說一下,這是Pythonic!
SonarLint是免費的,所以沒有理由不現在就抓住它並將其添加到編輯器上。
結論
如果您跳過這裡,只需快速警告,除非您對這些功能有基本的瞭解,否則可能無法正確使用這些功能。
以下是三種秘密武器的概述:
- 使用Kite Copilot和Editor插件,編寫速度更快,減少使用Google搜索使用次數
- 使用Mypy Python模塊穩定代碼
- 使用SonarLint編輯器插件快速查找錯誤並編寫更簡單的函數
希望這些工具能很好地為你服務,超級好用的3個工具。
--END--
歡迎大家關注我們的公眾號:為AI吶喊(weainahan)
找工作一定少不了項目實戰經驗,為了幫助更多缺少項目實戰的同學入門Python,我們在頭條上創建了一個專欄:《7小時快速掌握Pthon核心編程》,通過一個項目,快速掌握Python,歡迎大家點擊鏈接或者
閱讀原文進行試看~