2009-09-15 84 views
3

我在尋找關於編碼約定的建議。我使用的主要語言按頻率排序爲C#,JavaScript和ActionScript。它們都是基於ECMA的語言,因此大部分語法是可以互換的。我想要做的是標準化我編寫代碼的方式。跨語言編碼標準?

我四處尋找編碼標準的文檔,發現一些作者,包括微軟,Adobe,Doug Crockford和我擁有的各種書籍的作者。許多個人標準是相同的。例如,不要使用大寫來區分對象標識符。好的聽起來不錯。

但是,它們在某些方面有所不同,最明顯的是我在命名約定中。例如,在命名私有屬性時使用下劃線,或者在方法名稱中使用駝峯套管與Pascal套管。

C#的建議往往會比ActionScript和JavaScript之間的差異更大,這使得它對我來說更加困難,因爲它的語言更多,而編寫的代碼量更大。在IDE中也存在自動格式化的問題(例如,在JavaScript和C#中的功能中放置開放花括號)。

有關如何解決此問題的任何建議?我沒有看到任何大的陷阱?我意識到我可能會很迂腐,並且我很幸運能夠在一個不需要符合別人標準的環境中工作。我希望能夠提高生產力和更多可讀代碼。謝謝。

+3

C#(ECMA-334)由ECMA標準化,但它不基於ECMAScript(ECMA-262)像JavaScript和ActionScript一樣。 – dtb 2009-09-15 16:26:10

+0

開放花括號的放置是IDE中的一個配置選項,默認設置不一定是大多數開發人員遵循的慣例 - 它可能默認使用IDE開發人員使用的方法。您不會說哪種語言與其他語言做的不同,但無論哪種方式,您都可以配置IDE以匹配您的首選方法。如果你不能,改變你的IDE ;-) – NickFitz 2009-09-15 16:33:21

回答

7

儘管事實上都使用尖括號和分號,但在C#中有意義的成語在Javascript中不一定有意義(反之亦然)。

我們使用不同的編碼風格 - 大多數情況下,C#的標準Microsoft風格和大部分標準jQuery風格的Javascript。它可能有點奇怪(Pascal與駝峯案例的不相交意味着你有一些C#對象具有「不適當」的外殼,因爲它們幾乎就像JSON容器一樣),但我不會試圖去扯皮什麼是兩種離散語言融合成一個語法。

+0

我已經決定提出自己的編碼標準(受到社區的嚴重影響),但不是試圖以所有語言的一種風格來使用shoehorn,我要去創造兩個;一個用於C#,另一個用於Javascript/Actionscript(因爲它們足夠接近我)。感謝每個人的好答案。 – user50494 2009-09-16 20:55:16

6

我會堅持社區或語言創建者提出的標準,而不是試圖創建一個跨越邊界的標準。否則會導致開發人員對圍繞該語言的社區充滿熱情並積極參與其中。

我們試圖在我的一位僱主用Delphi和C#做到這一點,沒有人高興。

0

我很幸運在一個環境中工作,在那裏我沒有符合別人的標準

我個人不遵循C#微軟標準:不是,我所有的方法名稱和屬性名稱使用camelCase(儘管我的類型仍然使用UpperCase)。而且,我裝飾我的成員數據(以便它不能與局部變量,屬性和/或參數混淆)。

我不明白爲什麼有必要遵循微軟的命名約定; IMO甚至偶爾也是一件好事:不是:當我繼承Microsoft類型時,案例(例如'add')將我的方法與Microsoft方法(例如'Add')區分開來,並將其隱藏在底層基類中。當我編寫C++時,我不遵循與標準庫作者(使用lower_case作爲它們的類型,而我使用UpperCase)相同的命名約定。

然而,其他開發者可能/不喜歡它;例如,有人對我在SO上發佈的一些答案發表了一些C#代碼示例進行了評論,以批評它不是爲了它的內容,而是爲了它的命名約定。

+2

我不是故意的,但我很高興我不和你一起工作:-P雖然一致性是編碼標準的一個原因,但另一個原因是開發人員熟悉。如果您符合針對特定語言普遍接受的編碼標準,那麼新開發人員可以更輕鬆地調整您的代碼庫。 – 2009-09-15 17:22:23

0

這確實是一個優先選擇的問題,因爲這正是編碼標準:標準。在這裏沒有明顯的對與錯,強制每種語言的社區標準都有很多要求,除非你經常使用5種不同的語言,這些語言都有細微差別。你將無法跟上並開始追隨任何標準。

我之前做過的是在相同的球場(PHP,Java,Ruby)中使用相同的語言標準,如果使用相同的一組標準是絕對不切實際的,不同的你的大腦也可以做出開關(例如BASH腳本)。

但實際上這是你(和你的團隊的其他人)同意的。您無法從一組特定的編碼標準中獲得生產力,您可以通過與您工作的人員擁有相同的標準來獲得生產力。如果你想充分利用頂部有下劃線的匈牙利駱駝案例:給你更多的權力,只要確保整個團隊這樣做;)