2009-07-21 63 views
3

我剛開始使用Python,我在考慮應該使用哪種符號。我已閱讀關於Python符號的PEP 8指南,並且除了函數名稱(我更喜歡使用mixedCase樣式)之外,我同意大多數內容。Python表示法?

在C++中,我使用匈牙利表示法的修改版本,其中不包含有關類型的信息,但僅包含有關變量範圍的信息(例如,對於局部變量,可變值和對類成員變量的可變值, g表示全局,s表示靜態,in表示函數的輸入,out表示函數的輸出。)

我不知道這種表示風格是否有名稱,但我想知道是否不使用這種方法是個好主意Python中的符號風格。我對Python不是很熟悉,所以你們/ gals可能會遇到我無法想象的問題。

我也有興趣看看你在一般:)也許有人會說,它使代碼的可讀性想起來了,但我已經成習慣了,沒有這些標籤編寫的代碼是代碼對我來說可讀性較差。

+0

嗯,這是一個開源項目。 我現在已經非常想念它了(感謝所有答案btw)。除了underscore_separated_stuff,我將堅持使用PEP-8;我無法處理它:P – levesque 2009-07-22 13:45:57

回答

8

幾乎每個Python程序員會說它使代碼的可讀性,但我已經成爲習慣了,沒有這些標籤編寫的代碼是不易閱讀我的代碼)

FTFY。

儘管如此,它會幫助你,但會讓其他嘗試閱讀你的代碼的Python程序員感到困惑和困擾。

由於Python本身的工作原理,這也不是必要的。例如,你會永遠需要你「mVariable」形式,因爲很明顯在Python:

class Example(object): 
    def__init__(self): 
     self.my_member_var = "Hello" 

    def sample(self): 
     print self.my_member_var 

e = Example() 
e.sample() 
print e.my_member_var 

不管你如何訪問一個成員變量(使用self.foomyinstance.foo)它總是很清楚,這是一個成員。

其他情況可能並不那麼明顯,但如果你的代碼不夠簡單,讀者可能會記住「'name'變量是一個參數'錯誤。

+2

+1:放棄匈牙利符號。額外的字母被浪費了。只要將變量命名爲它們的用途 - 忘記範圍,類型,大小,重量,顏色或任何其他屬性。 – 2009-07-21 22:21:25

+2

谷歌的風格指南也推薦:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html – 2009-10-08 09:58:20

2

這取決於項目和目標受衆。

如果你正在構建一個開源應用程序/插件/庫,堅持與PEP準則。

如果這是您公司的項目,請遵守公司慣例或類似的規定。

如果這是您自己的個人項目,那麼請使用任何常規流暢且易於使用的方法。

我希望這是有道理的。

4

我違反PEP8在我的代碼。我使用:

  • 的方法lowercaseCamelCase和功能
  • _prefixedWithUnderscoreLowercaseCamelCase爲 「私人」 的方法
  • underscore_spaced變量(任意)
  • _prefixed_with_underscore_variables爲 「私有」 的自變量(屬性)
  • CapitalizedCamelCase爲類和模塊(儘管我正在轉向lowercased模塊)

我從來不喜歡匈牙利符號。一個變量名應該簡單易懂,提供足夠的信息來清楚它在哪裏(在哪個範圍內)被使用,它的目的是什麼,易於閱讀,關注它所指的含義,而不是技術上的巨型(巨型)例如類型)。

我違規背後的原因是由於實際考慮和以前的經驗。

  • 在C++和Java中,擁有CapitalizedCamel類和lowercaseCamel成員函數是傳統。
  • 我曾在一個代碼庫中使用下劃線前綴來表示私有,但沒有那麼多私有。我們不想弄亂python的名字mangling(雙下劃線)。這給了我們機會在單元測試期間違反了一些手續和偷看內部類的狀態。
7

使用PEP-8。它在Python世界中幾乎是普遍的。

1

您應該簡單地與自己的代碼命名約定相一致。但是,如果您打算將代碼發佈給其他開發人員,您應該堅持使用PEP-8。

例如,當您有一個合作項目時,4個空格與1個標籤是一個大問題。人們用代碼向代碼提交代碼要求開發人員經常討論空白問題(Python中的代碼是BIG交易)。

Python和所有語言都有首選約定。你應該學習它們。

Java喜歡mixedCaseStuff。

C喜歡szHungarianNotation。

Python更喜歡stuff_with_underscores。

您可以編寫with_python_type_function_names Java代碼。
你可以只要寫與javaStyleMixedCaseFunctionNamesThatAreSupposedToBeReallyExplict

Python代碼

爲您洽:P