2013-03-01 40 views
2

從沒有動態類型的編譯語言的背景來看,我發現在Python中令人沮喪的是可能通過拼寫錯誤無意中引入了一個新的變量名。拼寫錯誤的變量名稱。避免這種錯誤的最佳方法是什麼?

我有這樣一個例子,前幾天這裏的代碼去是這樣的:

received = False 

while not received: 
    ... 
    ... 
    ... 
    recieved = (some_conditional_statments) 
    ... 
    ... 

print some_results 

這裏收到是,本來是一個布爾變量來時的終止條件設置爲true循環到達。顯然,儘管在這種情況下,陷入了一個無限循環,由於拼寫錯誤的變量(REC * *粘彈性阻尼器)

顯然,編譯器將拿起像這樣的失誤直線距離,我只是想知道技術的人使用什麼幫助避免在Python中出現這樣的錯誤?

+0

有效的交流對程序員來說很重要,拼寫一致的最簡單方法是正確拼寫(並且知道你正在這樣做)。總之,我不會因爲知道這是錯誤的而輸入'recieved'來避免這種情況。我想你可以說這是一個紀律問題。 – 2013-03-01 14:22:08

+3

這不是一個非常有用的評論卡爾。即使他們知道正確的拼寫,任何人都可以通過轉置兩個按鍵來錯誤地輸入單詞。你的回答「根本就不會犯任何錯誤」只是毫無益處。 – Stuart 2013-03-01 14:35:57

+0

歡迎您來這樣感受,這就是爲什麼我留下評論而不是回答。儘管如此,這對我來說很有用。 – 2013-03-02 05:33:04

回答

7

使用體面的短絨,並使用自動化測試(單元測試等)測試您的代碼。大多數IDE和文本編輯器可以設置爲自動運行linter。

我推薦使用flake8;它結合了pep8 style checker,pyflakes linter的輸出(它會捕獲上述錯誤,它會告訴你recieved已分配給其他地方但從未在其他地方使用過),並會告訴你代碼是否變得太複雜(使用McCabe Cyclomatic complexity metric)。

+0

感謝Martijn,我現在正在看看Flake8。 – Stuart 2013-03-01 11:12:29

4

您可以使用pychecker這種事情。

有一個question about python linters here,你應該檢查出來。

+0

謝謝,我會看pychecker。 BTW。這是什麼Martijn指作爲棉絨「? – Stuart 2013-03-01 11:01:27

+0

@Stuart是的,它就像一個棉絨。我會添加一個鏈接到我的回答 – alestanis 2013-03-01 11:06:01

+0

不幸的是,'pychecker' *執行*您的python代碼;如果您的代碼在外部用於代碼檢查工具的系統(寫入文件,提交到數據庫等)*更好地堅持靜態工具+單元測試 – 2013-03-01 12:43:13

相關問題