我们正在将我们的项目从 C# 2.0 / VS2005 升级到 C# 3.0 / VS2008。作为升级的一部分,我们在编码标准文档中添加了一些项目。
从 C# 2.0 / VS2005 升级到 C# 3.0 / VS2008 时,您将如何(或是否)更改您的编码标准文档?
我们正在将我们的项目从 C# 2.0 / VS2005 升级到 C# 3.0 / VS2008。作为升级的一部分,我们在编码标准文档中添加了一些项目。
从 C# 2.0 / VS2005 升级到 C# 3.0 / VS2008 时,您将如何(或是否)更改您的编码标准文档?
您可以/应该就以下方面提供建议:
var
)其中最后两个引起了一些争议,尤其是var
.
如果您的约定提供了任何设计指南,我建议您还建议程序员考虑在以前可能使用继承或接口的地方使用委托进行专业化。一个很好的例子是排序——使用投影来指定排序顺序比编写IComparer<T>
.
升级恰逢一个新项目,所以当我们搬家时,我们开始使用 StyleCop 和 FxCop 等工具,这些工具改变了我们的编码标准。它也很方便地执行它们:o)
升级本身不会发生任何变化,尽管您可能需要查看围绕新功能的编码标准,例如 LINQ 表达式、布局、Lambda 与查询语法。
我个人的烦恼是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(...);
我对 2008 年新功能的标准: