我的問題更多面向Python,但也可能是關於JavaScript或其他腳本語言。如何在動態類型語言中描述函數參數?
我通常使用靜態類型語言(Java,C++,ActionScript,...)進行開發。
我喜歡不時使用Python,而且我還需要有時使用JavaScript。這些是動態類型語言。沒有什麼不對,但我通常有很多頭痛的問題來了解函數或方法中需要哪些參數。它發生,即使它是我自己的代碼與一些docstrings!也許是因爲眼睛不得不在功能的定義中尋找其他位置。
當然,答案應該在文檔中。但有時並不清楚所有,或因爲使用鴨的鍵入文檔本身可以是很難寫(「第一個參數是必須有一個庸醫()方法和羽毛(ARG)方法,其中一個功能arg是一個字符串「)。我非常喜歡的是在語言本身內部的一種參數描述(即使它是單獨的,就像ActionScript一樣)。
明確描述函數/方法參數的最佳實踐是什麼?
如何創建一個特殊的裝飾器(如果使用Python),其目的是檢查數據類型,當我們使用它(但因爲它將在運行時使用,而不是在寫入時間,無論如何將是點)?
你認爲這不應該是一個問題嗎?做比當前的文檔字符串更多會混淆開發人員,或者我的思想太靜態輸入導向?
忘掉這樣的裝飾。這對文檔沒有用處,非常複雜(如果正確完成),引入大量開銷,即使那樣也會危及鴨子打字,並且不會給你帶來類型檢查的任何好處(檢查而不運行程序,上述文檔,優化等) )。你介意*是*「太過靜態輸入」。 – delnan 2012-04-29 13:21:07
也許它確實是:)但是我有時會覺得花時間去理解一些Python庫的文檔,只是爲了知道我必須給出什麼論點;而我只需要用靜態類型來查看函數/方法簽名。我知道動態類型允許打破靜態類型語言的一些限制,但是,如果它意味着對圖書館的使用不清楚,我覺得我會失去一些時間。 – 2012-04-29 18:01:38