2009-12-31 41 views
2

微軟很清楚,.NET「標識符」或「參數」不應該包含縮寫。直接從馬的嘴:LINQ查詢:SQL風格的縮寫或拼出來?

爲了避免混淆和保證跨語言的互操作,遵循使用縮寫規則:

  • 不要使用縮寫或收縮的標識符名稱的部分。例如,使用GetWindow而不是GetWin。
  • 請勿使用在計算領域中未被普遍接受的縮寫詞。
  • 在適當的情況下,使用衆所周知的首字母縮略詞替換冗長的短語名稱。例如,使用用戶界面和OLAP進行在線分析處理。
  • 使用首字母縮略詞時,請使用Pascal案例或駱駝案例縮寫超過兩個字符的首字母縮寫詞。例如,使用HtmlButton或htmlButton。但是,您應該大寫只包含兩個字符的首字母縮寫詞,如System.IO而不是System.Io。
  • 請勿在標識符或參數名稱中使用縮寫。如果您必須使用縮寫,請使用駱駝案例來縮寫由兩個以上字符組成的縮寫,即使這與該單詞的標準縮寫矛盾。

- http://msdn.microsoft.com/en-us/library/141e06ef%28VS.71%29.aspx


然而,如果你看看MSDN自己101 LINQ Samples page,你會發現噸這樣的例子......

var productNames = 
    from p in products 
    select p.ProductName; 

...和很少(無?)像這樣...

var productNames = 
    from product in products 
    select product.ProductName 

...但在其他MSDN頁面上,您會找到可以拼寫出來的示例(例如,http://msdn.microsoft.com/en-us/library/bb384065.aspx)。

討論

我感慨這個感受。有了intellisense,拼出所有東西並不算困難,但我不確定它有多大的優勢。它更易讀還是更少?爲了清晰起見,你有點爲了字面而交易。 SQL程序員似乎相處得很好,用表名的簡寫縮寫,但是再次,程序員也習慣使用匈牙利符號來生存,而這已經被證明是一個不好的主意。

所以,一對夫婦的問題:

  1. 是否有LINQ查詢是否應該被簡化或者沒有任何官方指導?
  2. 你特別喜歡什麼?爲什麼?
+0

我同意tvanfosson和亞倫。範圍,循環和索引變量是縮寫規則通常可接受的例外。 – 2009-12-31 04:47:28

回答

3

我想你可以說範圍變量並不真正遵循與其他標識符相同的規則,因爲它的範圍完全侷限於查詢表達式。 「p」意味着什麼更明顯,因爲你從來沒有在from p in products的背景下看過它。

我的偏好 - 也許我不應該承認這一點 - 只是使用「p」。說實話,我根本沒有看到在描述性地命名只能用於一個語句中的東西。

想象一下,您正在編寫一個lambda表達式。你會寫:

products.Where(p.ProductID == productID).Select(p => p.ProductName) 

products.Where(product.ProductID == productID).Select(product => product.ProductName) 

其實我覺得第一個版本可讀,但也許這只是個人喜好。

+0

我同意。我認爲單個字母提供了最好的可讀性。 – crdx 2012-09-27 16:06:39

+0

只是不要四處使用'x'' – ErikE 2015-11-20 00:06:22

0

我使用整個單詞,如果它少於10個左右的字符。我也使用@symbol作爲範圍內的視覺提示。

var productNames = 
from @product in products 
select @product.ProductName 
+0

一個有趣的方式來做到這一點,但有點嘈雜。我在C#代碼中看到一個@符號,我的思緒立即消失,「這裏是一個字符串。」 – 2009-12-31 04:44:58

+0

你不會因爲它在視覺工作室裏面不紅。 – jfar 2009-12-31 13:47:04

2

我認爲它更類似於for循環中的索引變量。雖然我通常會避免使用單個字母的變量名稱,但在上下文中以及LINQ查詢(或lambda表達式)中的臨時佔位符的上下文中,我可以使用它。我喜歡簡潔。它將它與本地作用域變量區分開來。由於我更傾向於使用擴展方法而不是LINQ語法,因此我在lambdas中使用了很多單獨的變量名,並且更喜歡它。當然,這些變量的數量很小時,閱讀並不困難,並且可能會更容易。如果一個更長的變量名稱使其更容易理解,但我並不反對使用它。