2011-08-10 44 views
2

由於我花了很多空閒時間花費ATM,因此我在這裏閱讀了一些關於代碼註釋和文檔的主題/評論。 正如大多數人在這裏我也認爲你應該寫你的代碼,以便儘可能地閱讀和自我評論。 另一方面,我是一個龐大的FP-Fanboy - 是的,如果你以正確的方式編寫代碼,它將在FP中非常易讀 - 或者我認爲。 問題是,小事情在FP世界中造成了很大的差異。如果你的同事不完全理解FP,他可能會「讀取」代碼的縮進,但不能修改或完全理解它。這代表了像Haskell這樣的語言學家,在那裏有'。'或者'$'會帶來很大的變化,並且對於像F#這樣的語言,甚至VB.NET的C#都有很多LINQ語句。函數式編程和自我評論代碼 - 這真的有可能嗎?

乍一看這個問題可能是,你的同伴沒有得到語言,也不是代碼錯誤 - 另一方面:誰真正得到了所有的FP?看看有關Haskell的一些論文 - 代碼製作精美並且自我評論,但就像在數學中一樣,在獲得它之前,您可能需要在一條線上咀嚼幾分鐘。

當然,在這些論文將有一個文本塊嘗試只是代碼後澄清....

所以恕我直言,你有,只要你的工作發表意見的FP-代碼在一個商店,不是每個同事都有CS的博士學位;)

你覺得怎麼樣?

PS:這裏的第一篇文章 - 真正尋找關於這個問題的答案,但沒有發現任何 - 請溫柔,如果我只是不看夠硬:)

+1

根據定義,「自我評論」代碼是不可能的。代碼是關於「什麼?」和「怎麼做?」,而評論應該包括「爲什麼?」。那麼爲何不?」。這就是Literate Haskell和其他人一樣。 –

+0

好,然後給你的函數/方法名稱,如f1,f2,... – Carsten

+0

提供可讀的名稱不足以呈現代碼「自我解釋」。 –

回答

5

函數式語言大大有利於自身的發展 - 文檔代碼,因爲您可以自由地重新排列函數的順序,並輕鬆地抽取代碼的任何給定部分,併爲其指定一個解釋性名稱。

抽象,抽象,抽象,是掌握代碼複雜性的關鍵字,這就是功能風格的亮點。但是總會有一些東西在代碼本身中無法表達。

一個明顯的例子是算法的代碼。僅僅通過查看實現,人們不太可能容易地理解複雜的算法。是的,函數式語言使理解變得更簡單,因爲許多血淋淋的細節(簡單的例子:內存管理)不需要明確編碼,從而更清楚地暴露底層邏輯。

然而,這不能代替自然語言的解釋,它以一種直觀的方式傳達了它的工作原理(有時一張圖片勝過千言萬語)。這是因爲我們的大腦需要從不同的角度觀察困難的概念以充分理解它們。

評論內容還取決於你的觀衆。初學者,普通程序員或嚮導?沒有萬能的解決方案。

E.g.你應該解釋一個「。」的含義。 (函數組合),如果你正在編寫教程代碼,但對於那些已經過去Haskell書第一,二章的人來說,這肯定是一個多餘的解釋。

另一方面,一些特定的算法,比如說紅黑樹,可能是某些程序員給出的,對於其他人來說是非常神祕的。在第二種情況下,您應該向代碼添加許多評論,或者指出一個文檔並提供進一步的解釋。

最後,人們應該注意到,即使在主人之間也沒有達成共識。例如。 Dennis Ritchie因其非常節儉而出名,而Don Knuth是「Literate programming」的倡導者,評論與代碼本身一樣重要。一套規則永遠不會取代個人品味。

+0

謝謝 - 我想我必須重新思考我的一些實現方式 - 我傾向於將「排隊」與多個lambdas。如果我真的給一些小功能的名字,可能會更清楚。 – Carsten