升级到C#3.0 / VS2008时,您的编码标准文档是如何更改的?

时间:2008-12-04 09:02:08

标签: c# visual-studio-2008 visual-studio-2005 coding-style upgrade

我们正在将项目从C#2.0 / VS2005升级到C#3.0 / VS2008。作为升级的一部分,我们在编码标准文档中添加了一些项目。

从C#2.0 / VS2005升级到C#3.0 / VS2008时,您将如何(或确实)更改编码标准文档?

5 个答案:

答案 0 :(得分:7)

您可以/应该提供以下建议:

  • 何时使用查询表达式vs点表示法
  • 对lambda表达式的使用有任何限制(例如“不要修改捕获的变量”。(当然,这也适用于C#2中的匿名方法。)
  • 何时编写扩展方法
  • 何时使用隐式类型变量(var

最后两个引起争议,特别是var

如果您的约定提供了任何设计指南,我建议您还建议程序员考虑使用委托进行专业化,而以前他们可能已经使用了继承或接口。一个很好的例子就是排序 - 使用投影指定排序顺序比编写IComparer<T>的实现更容易(也更易读)。

答案 1 :(得分:2)

升级恰逢新项目,所以当我们搬家时,我们开始使用StyleCop和FxCop等工具来改变我们的编码标准。它也可以轻松地执行它们:o)

答案 2 :(得分:1)

由于升级,任何事情都不应该改变,尽管您可能需要查看围绕新功能的编码标准,例如LINQ表达式,布局,Lambda与查询语法。

答案 3 :(得分:1)

我个人的烦恼是var在任何可能的地方使用。

“可能”目前被定义为以下情况之一,主要是为了降低整洁度:

很明显,帮助DRY:

var obj1 = new Something();
var obj2 = (Something)ObscureFunction();
var obj3 = ObscureStuff() as Something;

守卫,只要它编译我就不在乎了:

var obj4 = ObscureFunction();
foreach(Something s in obj4) { ... }

复杂泛型和几乎所有LINQ结果:

var obj5 = ctx.GetQuery<Something>()..ToList(..)..GroupJoin(..)...ToLookup(...);

答案 4 :(得分:0)

我对2008年新功能的标准:

  • 仅对匿名类型使用var。
  • 鼓励在代表中使用lambda表达式。
  • 当您无法控制源代码时,仅使用扩展方法