LINQ查询:SQL风格的缩写还是拼出来?

LINQ查询:SQL风格的缩写还是拼出来?,sql,linq,naming-conventions,coding-style,Sql,Linq,Naming Conventions,Coding Style,Microsoft非常清楚.NET“标识符”或“参数”不应包含缩写。直接从马嘴里说: 为避免混淆并保证跨语言互操作,请遵循以下有关缩写使用的规则: 不要使用缩写或缩略语作为标识符名称的一部分。例如,使用GetWindow而不是GetWin 不要使用在计算领域不被普遍接受的首字母缩略词 在适当的情况下,使用众所周知的首字母缩略词替换冗长的短语名称。例如,用户界面使用UI,联机分析处理使用OLAP 使用首字母缩略词时,对于长度超过两个字符的首字母缩略词,请使用Pascal大小写或camel大小写。

Microsoft非常清楚.NET“标识符”或“参数”不应包含缩写。直接从马嘴里说:

为避免混淆并保证跨语言互操作,请遵循以下有关缩写使用的规则:

  • 不要使用缩写或缩略语作为标识符名称的一部分。例如,使用GetWindow而不是GetWin
  • 不要使用在计算领域不被普遍接受的首字母缩略词
  • 在适当的情况下,使用众所周知的首字母缩略词替换冗长的短语名称。例如,用户界面使用UI,联机分析处理使用OLAP
  • 使用首字母缩略词时,对于长度超过两个字符的首字母缩略词,请使用Pascal大小写或camel大小写。例如,使用HtmlButton或HtmlButton。但是,您应该将仅由两个字符组成的首字母缩略词大写,例如System.IO而不是System.IO
  • 不要在标识符或参数名称中使用缩写。如果您必须使用缩写,请对包含两个以上字符的缩写使用驼峰大小写,即使这与单词的标准缩写相矛盾
-


然而,如果你看看MSDN自己的,你会发现像这样的例子吨

var productNames =
    from p in products
    select p.ProductName;
var productNames =
    from product in products
    select product.ProductName
…像这样的人很少(没有?)

var productNames =
    from p in products
    select p.ProductName;
var productNames =
    from product in products
    select product.ProductName
…但在其他MSDN页面上,您会发现一些详细说明的示例(例如)

讨论

对此我有复杂的感觉。有了智能感知,把一切都说清楚并不困难,但我也不确定它有多大优势。是可读性更强还是更少?你在用冗长来换取清晰。SQL程序员似乎能很好地使用表名的缩写词,但同样,程序员过去也使用匈牙利符号生存下来,这已经被证明是个坏主意

那么,有几个问题:

  • 对于LINQ查询是否应该缩写,是否有任何官方指导
  • 你特别喜欢什么?为什么

  • 如果少于10个左右的字符,我就使用整个单词。我还使用@符号作为范围内/范围外的视觉提示

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

    我想您可以说,范围变量实际上并不遵循与其他标识符相同的规则,因为它的范围完全限于查询表达式。“p”的含义更为明显,因为您永远不会在产品中p的
    上下文之外看待它

    我的偏好——也许我不应该承认这一点——只是使用“p”。老实说,我根本不认为用描述性的方式命名只能在一个语句中使用的东西有什么意义

    假设您正在编写一个lambda表达式。请你写:

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


    实际上,我发现第一个版本更具可读性,但可能这只是个人喜好。

    我认为它更类似于for循环中的索引变量。虽然我通常会避免使用单字母变量名,但在该上下文和LINQ查询(或lambda表达式)中的临时占位符上下文中,我可以接受。我喜欢简洁。它将其与局部作用域变量区分开来。因为我更倾向于使用扩展方法而不是LINQ语法,所以我在lambdas中经常使用单变量名称,并且更喜欢在lambdas中使用。它当然不难阅读,而且当这些变量的数量较少时,可能更容易阅读。如果一个较长的变量名使它更容易理解,那么我也不反对使用它。

    一个有趣的方法,但是有点吵。我在C#代码中看到一个@符号,我的大脑立刻会想,“这里有一个文字字符串。”你不会的,因为它在visual studio中不是红色的。我同意tvanfosson和Aaron的观点。范围、循环和索引变量是缩写规则的公认例外。我同意。我认为单个字母的可读性最好。只是不要到处使用
    x
    `