当您升级到 C# 3.0 / VS2008 后,您的编码标准文档发生了怎样的变化?

发布于 2024-07-10 20:28:48 字数 151 浏览 6 评论 0原文

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

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

We are in the process of upgrading our projects from C# 2.0 / VS2005 to C# 3.0 / VS2008. As part of the upgrade, we are adding some items to our coding standards document.

How would (or did) you change your coding standards document when upgrading from C# 2.0 / VS2005 to C# 3.0 / VS2008?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

小红帽 2024-07-17 20:28:48

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

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

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

如果您的约定给出了任何设计指南,我会这样做。建议您还建议程序员考虑使用委托进行专门化,以前他们可能使用继承或接口。排序就是一个很好的例子 - 使用投影来指定排序顺序比编写更容易(并且更具可读性)。 IComparer 的实现。

You could/should give advice about:

  • When to use query expressions vs dot notation
  • Any restrictions on the use of lambda expressions (e.g. "don't modify captured variables). (This could also apply to anonymous methods in C# 2 of course.)
  • When to write extension methods
  • When to use implicitly typed variables (var)

The last two of these cause some controversy, particularly var.

If your conventions give any design guidelines, I'd suggest that you also advise programmers to consider using delegates for specialisation where previously they might have used inheritance or interfaces. A good example of this is sorting - it's easier (and more readable) to use a projection to specify a sort order than to write an implementation of IComparer<T>.

橘寄 2024-07-17 20:28:48

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

The updgrade coincided with a new project, so when we moved we started using tools like StyleCop and FxCop which altered our coding standards. Also it handily enforces them too :o)

无尽的现实 2024-07-17 20:28:48

尽管您可能需要查看围绕新功能的编码标准,例如 LINQ 表达式、布局、Lambda 与查询语法,但本身不应因升级而发生任何变化。

Nothing should change per se due to the upgrade, though you may need to look at coding standards around new features, such as LINQ expressions, layout, Lambda versus query syntax.

疑心病 2024-07-17 20:28:48

我个人最讨厌的是在“可能”的地方使用 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(...);

My personal pet peeve is the usage of var wherever "possible".

"Possible" being currently defined as one of the following cases, mostly in order of decreasing neatness:

Obvious, helping DRY:

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

Guarded, I don't care as long as it compiles:

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

Complex Generics and almost any LINQ result:

var obj5 = ctx.GetQuery<Something>()..ToList(..)..GroupJoin(..)...ToLookup(...);
怕倦 2024-07-17 20:28:48

我对 2008 年新功能的标准:

  • 仅对匿名类型谨慎使用 var。
  • 鼓励在委托上使用 lambda 表达式。
  • 仅当您无法控制源代码时才使用扩展方法

My standards for new features for 2008:

  • Use var sparingly only with anonymous types.
  • Encourage use of lambda expressions over delegates.
  • Only use extension methods when you don't have control of the source code
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文